@nypl/design-system-react-components 0.25.7 → 0.25.10

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 (293) hide show
  1. package/CHANGELOG.md +119 -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 +1 -21
  19. package/dist/components/Icons/IconTypes.d.ts +1 -23
  20. package/dist/components/Image/Image.d.ts +11 -3
  21. package/dist/components/Image/ImageTypes.d.ts +3 -1
  22. package/dist/components/Link/LinkTypes.d.ts +1 -0
  23. package/dist/components/Logo/Logo.d.ts +28 -0
  24. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  25. package/dist/components/Logo/LogoTypes.d.ts +30 -0
  26. package/dist/components/Modal/Modal.d.ts +0 -4
  27. package/dist/components/Notification/Notification.d.ts +4 -2
  28. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  29. package/dist/components/Radio/Radio.d.ts +6 -5
  30. package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
  31. package/dist/components/SearchBar/SearchBar.d.ts +15 -7
  32. package/dist/components/Select/Select.d.ts +5 -2
  33. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  34. package/dist/components/Slider/Slider.d.ts +3 -2
  35. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  36. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  37. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  38. package/dist/components/Table/Table.d.ts +29 -0
  39. package/dist/components/Template/Template.d.ts +30 -6
  40. package/dist/components/Text/Text.d.ts +2 -2
  41. package/dist/components/TextInput/TextInput.d.ts +4 -3
  42. package/dist/components/Toggle/Toggle.d.ts +48 -0
  43. package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
  44. package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
  45. package/dist/design-system-react-components.cjs.development.js +4698 -4405
  46. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  47. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  48. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  49. package/dist/design-system-react-components.esm.js +5862 -5573
  50. package/dist/design-system-react-components.esm.js.map +1 -1
  51. package/dist/index.d.ts +13 -8
  52. package/dist/resources.scss +0 -2
  53. package/dist/styles.css +2 -2
  54. package/dist/theme/components/breadcrumb.d.ts +1 -1
  55. package/dist/theme/components/button.d.ts +0 -12
  56. package/dist/theme/components/card.d.ts +14 -2
  57. package/dist/theme/components/customTable.d.ts +56 -0
  58. package/dist/theme/components/fieldset.d.ts +2 -2
  59. package/dist/theme/components/global.d.ts +1 -1
  60. package/dist/theme/components/heading.d.ts +4 -0
  61. package/dist/theme/components/label.d.ts +1 -1
  62. package/dist/theme/components/link.d.ts +14 -1
  63. package/dist/theme/components/list.d.ts +0 -2
  64. package/dist/theme/components/logo.d.ts +4 -0
  65. package/dist/theme/components/notification.d.ts +8 -4
  66. package/dist/theme/components/searchBar.d.ts +7 -13
  67. package/dist/theme/components/select.d.ts +1 -0
  68. package/dist/theme/components/structuredContent.d.ts +33 -0
  69. package/dist/theme/components/template.d.ts +10 -10
  70. package/dist/theme/components/textInput.d.ts +2 -0
  71. package/dist/theme/components/toggle.d.ts +71 -0
  72. package/dist/theme/foundations/spacing.d.ts +2 -0
  73. package/dist/utils/utils.d.ts +10 -0
  74. package/package.json +40 -37
  75. package/src/__tests__/utils/utils.test.ts +23 -1
  76. package/src/components/Accordion/Accordion.stories.mdx +16 -15
  77. package/src/components/Accordion/Accordion.test.tsx +45 -1
  78. package/src/components/Accordion/Accordion.tsx +20 -8
  79. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
  80. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  81. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  82. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  83. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
  84. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +25 -0
  85. package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
  86. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +103 -4
  87. package/src/components/Button/Button.stories.mdx +93 -48
  88. package/src/components/Button/Button.test.tsx +0 -12
  89. package/src/components/Button/Button.tsx +7 -8
  90. package/src/components/Button/ButtonTypes.tsx +0 -1
  91. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  92. package/src/components/Card/Card.stories.mdx +246 -64
  93. package/src/components/Card/Card.test.tsx +45 -22
  94. package/src/components/Card/Card.tsx +30 -14
  95. package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
  96. package/src/components/Chakra/Box.stories.mdx +3 -3
  97. package/src/components/Chakra/Center.stories.mdx +5 -5
  98. package/src/components/Chakra/Flex.stories.mdx +113 -0
  99. package/src/components/Chakra/Grid.stories.mdx +14 -17
  100. package/src/components/Chakra/Stack.stories.mdx +2 -2
  101. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  102. package/src/components/Checkbox/Checkbox.tsx +13 -8
  103. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  104. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  105. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  106. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  107. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  108. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  109. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  110. package/src/components/DatePicker/DatePicker.test.tsx +14 -12
  111. package/src/components/DatePicker/DatePicker.tsx +13 -10
  112. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
  113. package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
  114. package/src/components/Fieldset/Fieldset.tsx +2 -4
  115. package/src/components/Form/Form.stories.mdx +75 -49
  116. package/src/components/Form/Form.test.tsx +92 -3
  117. package/src/components/Form/Form.tsx +28 -23
  118. package/src/components/Form/FormTypes.tsx +2 -2
  119. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
  120. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  121. package/src/components/Heading/Heading.stories.mdx +59 -23
  122. package/src/components/Heading/Heading.test.tsx +82 -18
  123. package/src/components/Heading/Heading.tsx +31 -31
  124. package/src/components/Heading/HeadingTypes.tsx +6 -6
  125. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  126. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  127. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  128. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  129. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  130. package/src/components/Hero/Hero.stories.mdx +72 -53
  131. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
  132. package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
  133. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
  134. package/src/components/Icons/Icon.stories.mdx +77 -75
  135. package/src/components/Icons/Icon.tsx +4 -5
  136. package/src/components/Icons/IconSvgs.tsx +2 -42
  137. package/src/components/Icons/IconTypes.tsx +1 -24
  138. package/src/components/Image/Image.stories.mdx +214 -104
  139. package/src/components/Image/Image.test.tsx +10 -0
  140. package/src/components/Image/Image.tsx +21 -10
  141. package/src/components/Image/ImageTypes.ts +2 -0
  142. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  143. package/src/components/Label/Label.stories.mdx +21 -20
  144. package/src/components/Link/Link.stories.mdx +103 -53
  145. package/src/components/Link/Link.test.tsx +108 -7
  146. package/src/components/Link/Link.tsx +58 -19
  147. package/src/components/Link/LinkTypes.tsx +1 -0
  148. package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
  149. package/src/components/List/List.stories.mdx +37 -25
  150. package/src/components/List/List.tsx +1 -1
  151. package/src/components/Logo/Logo.stories.mdx +220 -0
  152. package/src/components/Logo/Logo.test.tsx +98 -0
  153. package/src/components/Logo/Logo.tsx +97 -0
  154. package/src/components/Logo/LogoSvgs.tsx +34 -0
  155. package/src/components/Logo/LogoTypes.tsx +32 -0
  156. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  157. package/src/components/Modal/Modal.stories.mdx +20 -5
  158. package/src/components/Modal/Modal.tsx +2 -8
  159. package/src/components/Notification/Notification.stories.mdx +96 -40
  160. package/src/components/Notification/Notification.test.tsx +62 -16
  161. package/src/components/Notification/Notification.tsx +26 -9
  162. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
  163. package/src/components/Pagination/Pagination.stories.mdx +19 -9
  164. package/src/components/Pagination/Pagination.tsx +3 -3
  165. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
  166. package/src/components/Placeholder/Placeholder.tsx +7 -14
  167. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
  168. package/src/components/Radio/Radio.stories.mdx +39 -19
  169. package/src/components/Radio/Radio.tsx +13 -9
  170. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
  171. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  172. package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
  173. package/src/components/RadioGroup/RadioGroup.tsx +97 -94
  174. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
  175. package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
  176. package/src/components/SearchBar/SearchBar.stories.mdx +116 -34
  177. package/src/components/SearchBar/SearchBar.tsx +70 -50
  178. package/src/components/Select/Select.stories.mdx +177 -66
  179. package/src/components/Select/Select.test.tsx +91 -2
  180. package/src/components/Select/Select.tsx +29 -13
  181. package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
  182. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  183. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  184. package/src/components/Slider/Slider.stories.mdx +74 -23
  185. package/src/components/Slider/Slider.test.tsx +35 -0
  186. package/src/components/Slider/Slider.tsx +22 -11
  187. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
  188. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  189. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  190. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  191. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  192. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  193. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  194. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  195. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  196. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  197. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  198. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  199. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  200. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  201. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  202. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  203. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  204. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  205. package/src/components/Table/Table.stories.mdx +165 -0
  206. package/src/components/Table/Table.test.tsx +137 -0
  207. package/src/components/Table/Table.tsx +126 -0
  208. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
  209. package/src/components/Tabs/Tabs.stories.mdx +20 -14
  210. package/src/components/Tabs/Tabs.test.tsx +21 -5
  211. package/src/components/Tabs/Tabs.tsx +33 -18
  212. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
  213. package/src/components/Template/Template.stories.mdx +132 -49
  214. package/src/components/Template/Template.test.tsx +128 -6
  215. package/src/components/Template/Template.tsx +93 -13
  216. package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
  217. package/src/components/Text/Text.stories.mdx +33 -11
  218. package/src/components/Text/Text.tsx +2 -2
  219. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  220. package/src/components/TextInput/TextInput.test.tsx +96 -0
  221. package/src/components/TextInput/TextInput.tsx +12 -8
  222. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  223. package/src/components/Toggle/Toggle.stories.mdx +200 -0
  224. package/src/components/Toggle/Toggle.test.tsx +140 -0
  225. package/src/components/Toggle/Toggle.tsx +123 -0
  226. package/src/components/Toggle/ToggleSizes.tsx +4 -0
  227. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
  228. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
  229. package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
  230. package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
  231. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
  232. package/src/docs/Chakra.stories.mdx +5 -8
  233. package/src/docs/Intro.stories.mdx +2 -2
  234. package/src/index.ts +19 -6
  235. package/src/styles/base/_03-base.scss +1 -1
  236. package/src/styles/base/_place-holder.scss +7 -7
  237. package/src/styles.scss +1 -5
  238. package/src/theme/components/breadcrumb.ts +5 -5
  239. package/src/theme/components/button.ts +5 -12
  240. package/src/theme/components/card.ts +9 -7
  241. package/src/theme/components/checkbox.ts +1 -1
  242. package/src/theme/components/customTable.ts +63 -0
  243. package/src/theme/components/datePicker.ts +1 -1
  244. package/src/theme/components/global.ts +7 -7
  245. package/src/theme/components/heading.ts +13 -11
  246. package/src/theme/components/helperErrorText.ts +1 -1
  247. package/src/theme/components/icon.ts +2 -2
  248. package/src/theme/components/image.ts +9 -1
  249. package/src/theme/components/link.ts +17 -5
  250. package/src/theme/components/list.ts +1 -3
  251. package/src/theme/components/logo.ts +54 -0
  252. package/src/theme/components/notification.ts +9 -7
  253. package/src/theme/components/searchBar.ts +7 -13
  254. package/src/theme/components/select.ts +1 -0
  255. package/src/theme/components/statusBadge.ts +1 -1
  256. package/src/theme/components/structuredContent.ts +54 -0
  257. package/src/theme/components/template.ts +10 -10
  258. package/src/theme/components/text.ts +6 -6
  259. package/src/theme/components/textInput.ts +1 -0
  260. package/src/theme/components/toggle.ts +69 -0
  261. package/src/theme/components/videoPlayer.ts +0 -2
  262. package/src/theme/foundations/global.ts +2 -2
  263. package/src/theme/foundations/spacing.ts +3 -0
  264. package/src/theme/foundations/typography.ts +84 -12
  265. package/src/theme/index.ts +8 -0
  266. package/src/utils/componentCategories.ts +5 -2
  267. package/src/utils/utils.ts +17 -0
  268. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  269. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  270. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  271. package/dist/components/Input/Input.d.ts +0 -36
  272. package/dist/components/Input/Input.stories.d.ts +0 -29
  273. package/dist/components/Input/InputTypes.d.ts +0 -6
  274. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  275. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  276. package/dist/helpers/getCSSVariable.d.ts +0 -1
  277. package/dist/interfaces.d.ts +0 -3
  278. package/dist/utils/bem.d.ts +0 -1
  279. package/src/__tests__/utils/bem.test.ts +0 -37
  280. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  281. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  282. package/src/components/CardEdition/CardEdition.tsx +0 -60
  283. package/src/components/CardEdition/_CardEdition.scss +0 -137
  284. package/src/components/Input/Input.stories.tsx +0 -133
  285. package/src/components/Input/Input.test.tsx +0 -266
  286. package/src/components/Input/Input.tsx +0 -81
  287. package/src/components/Input/InputTypes.tsx +0 -8
  288. package/src/components/Input/_Input.scss +0 -78
  289. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  290. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  291. package/src/helpers/getCSSVariable.tsx +0 -5
  292. package/src/interfaces.ts +0 -3
  293. package/src/utils/bem.ts +0 -44
@@ -1,17 +1,17 @@
1
1
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
2
  ArgsTable,
3
+ Canvas,
6
4
  Description,
7
- } from "@storybook/addon-docs/blocks";
5
+ Meta,
6
+ Story,
7
+ } from "@storybook/addon-docs";
8
8
  import { withDesign } from "storybook-addon-designs";
9
9
 
10
- import Slider from "./Slider";
11
- import SimpleGrid from "../Grid/SimpleGrid";
12
- import { GridGaps } from "../Grid/GridTypes";
13
10
  import Heading from "../Heading/Heading";
14
11
  import { HeadingLevels } from "../Heading/HeadingTypes";
12
+ import { GridGaps } from "../Grid/GridTypes";
13
+ import SimpleGrid from "../Grid/SimpleGrid";
14
+ import Slider from "./Slider";
15
15
  import { getCategory } from "../../utils/componentCategories";
16
16
  import DSProvider from "../../theme/provider";
17
17
 
@@ -22,16 +22,52 @@ import DSProvider from "../../theme/provider";
22
22
  parameters={{
23
23
  design: {
24
24
  type: "figma",
25
- url:
26
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=36889%3A25871",
25
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=36889%3A25871",
27
26
  },
28
27
  jest: ["Slider.test.tsx"],
29
28
  }}
30
29
  argTypes={{
31
- className: { table: { disable: true } },
32
- id: { table: { disable: true } },
33
- name: { table: { disable: true } },
34
- onChange: { table: { disable: true } },
30
+ className: { control: false },
31
+ defaultValue: {
32
+ control: false,
33
+ table: { defaultValue: { summary: 0 } },
34
+ },
35
+ id: { control: false },
36
+ isDisabled: {
37
+ table: { defaultValue: { summary: false } },
38
+ },
39
+ isInvalid: {
40
+ table: { defaultValue: { summary: false } },
41
+ },
42
+ isRequired: {
43
+ table: { defaultValue: { summary: false } },
44
+ },
45
+ max: {
46
+ table: { defaultValue: { summary: 100 } },
47
+ },
48
+ min: {
49
+ table: { defaultValue: { summary: 0 } },
50
+ },
51
+ name: { control: false },
52
+ onChange: { control: false },
53
+ optReqFlag: {
54
+ table: { defaultValue: { summary: true } },
55
+ },
56
+ showBoxes: {
57
+ table: { defaultValue: { summary: true } },
58
+ },
59
+ showHelperInvalidText: {
60
+ table: { defaultValue: { summary: true } },
61
+ },
62
+ showLabel: {
63
+ table: { defaultValue: { summary: true } },
64
+ },
65
+ showValues: {
66
+ table: { defaultValue: { summary: true } },
67
+ },
68
+ step: {
69
+ table: { defaultValue: { summary: 1 } },
70
+ },
35
71
  }}
36
72
  />
37
73
 
@@ -40,7 +76,7 @@ import DSProvider from "../../theme/provider";
40
76
  | Component Version | DS Version |
41
77
  | ----------------- | ---------- |
42
78
  | Added | `0.25.4` |
43
- | Latest | `0.25.4` |
79
+ | Latest | `0.25.9` |
44
80
 
45
81
  <Description of={Slider} />
46
82
 
@@ -49,10 +85,12 @@ For this type of component, the `value` prop must be a single number.
49
85
 
50
86
  <Canvas withToolbar>
51
87
  <Story
52
- name="Slider with Props"
88
+ name="Slider with Controls"
53
89
  args={{
90
+ className: undefined,
54
91
  defaultValue: 50,
55
92
  helperText: "Pass in a value from the min 0 to the max 100 values.",
93
+ id: "slider-id",
56
94
  invalidText: "Oh no this is an error :(",
57
95
  isDisabled: false,
58
96
  isInvalid: false,
@@ -61,6 +99,8 @@ For this type of component, the `value` prop must be a single number.
61
99
  labelText: "Slider label",
62
100
  max: 100,
63
101
  min: 0,
102
+ name: undefined,
103
+ onChange: undefined,
64
104
  optReqFlag: true,
65
105
  showBoxes: true,
66
106
  showHelperInvalidText: true,
@@ -69,15 +109,19 @@ For this type of component, the `value` prop must be a single number.
69
109
  step: 1,
70
110
  }}
71
111
  argTypes={{
72
- defaultValue: { table: { disable: true } },
73
- isRangeSlider: { table: { disable: true } },
112
+ isRangeSlider: {
113
+ control: false,
114
+ table: {
115
+ defaultValue: { summary: false },
116
+ },
117
+ },
74
118
  }}
75
119
  >
76
120
  {(args) => <Slider {...args} />}
77
121
  </Story>
78
122
  </Canvas>
79
123
 
80
- <ArgsTable story="Slider with Props" />
124
+ <ArgsTable story="Slider with Controls" />
81
125
 
82
126
  ### Accessibility
83
127
 
@@ -101,8 +145,10 @@ numbers. This signifies the starting and ending values of the range slider.
101
145
  <Story
102
146
  name="Range Slider with Props"
103
147
  args={{
148
+ className: undefined,
104
149
  defaultValue: [25, 75],
105
150
  helperText: "Pass in a value from the min 0 to the max 100 values.",
151
+ id: "slider-range-id",
106
152
  invalidText: "Oh no this is an error :(",
107
153
  isDisabled: false,
108
154
  isInvalid: false,
@@ -111,6 +157,8 @@ numbers. This signifies the starting and ending values of the range slider.
111
157
  labelText: "Range Slider label",
112
158
  max: 100,
113
159
  min: 0,
160
+ name: undefined,
161
+ onChange: undefined,
114
162
  optReqFlag: true,
115
163
  showBoxes: true,
116
164
  showHelperInvalidText: true,
@@ -119,16 +167,18 @@ numbers. This signifies the starting and ending values of the range slider.
119
167
  step: 1,
120
168
  }}
121
169
  argTypes={{
122
- defaultValue: { table: { disable: true } },
123
- isRangeSlider: { table: { disable: true } },
170
+ isRangeSlider: {
171
+ control: false,
172
+ table: {
173
+ defaultValue: { summary: false },
174
+ },
175
+ },
124
176
  }}
125
177
  >
126
178
  {(args) => <Slider {...args} />}
127
179
  </Story>
128
180
  </Canvas>
129
181
 
130
- <ArgsTable story="Range Slider with Props" />
131
-
132
182
  ### Accessibility
133
183
 
134
184
  Chakra's `RangeSlider` component is accessible and, as recommended, we pass in
@@ -439,7 +489,8 @@ Pass a callback function to the `onChange` prop to get the current number value
439
489
  of the `Slider` component or an array of two numbers when it is a range slider.
440
490
  Internally, the `Slider` component handles the state of the current selected
441
491
  value or values. Once the value(s) is updated, the `onChange` callback will be
442
- called and the values will be passed.
492
+ called and the values will be passed. If no `onChange` callback is provided,
493
+ you won't be able to get the updated value(s) of the `Slider` component.
443
494
 
444
495
  #### Single Slider Value
445
496
 
@@ -294,6 +294,26 @@ describe("Slider", () => {
294
294
  expect(input).toHaveValue(100);
295
295
  });
296
296
 
297
+ it("doesn't crash if no onChange callback function is passed", () => {
298
+ let currentValue = 0;
299
+ render(
300
+ <Slider
301
+ defaultValue={50}
302
+ helperText="Component helper text."
303
+ invalidText="Component error text :("
304
+ labelText="Label"
305
+ />
306
+ );
307
+
308
+ const input = screen.getByRole("spinbutton");
309
+ fireEvent.change(input, {
310
+ target: { value: "42" },
311
+ });
312
+ // While we change the slider input value, since there is no onChange
313
+ // function, there is no way to update this local `currentValue` variable.
314
+ expect(currentValue).toEqual(0);
315
+ });
316
+
297
317
  it("gets the current value through the onChange callback function", () => {
298
318
  let currentValue = 0;
299
319
  function onChange(value) {
@@ -495,6 +515,21 @@ describe("Slider", () => {
495
515
  );
496
516
  });
497
517
 
518
+ it("renders with min and max values as the default values if no `defaultValue` array is passed", () => {
519
+ render(
520
+ <Slider
521
+ helperText="Component helper text."
522
+ invalidText="Component error text :("
523
+ isRangeSlider
524
+ labelText="Label"
525
+ max={80}
526
+ min={30}
527
+ />
528
+ );
529
+ expect(screen.getByText("30")).toBeInTheDocument();
530
+ expect(screen.getByText("80")).toBeInTheDocument();
531
+ });
532
+
498
533
  it("renders the invalid state if the start and end values are wrong", () => {
499
534
  // The start value is bigger than the end value.
500
535
  render(
@@ -14,7 +14,9 @@ import {
14
14
 
15
15
  import generateUUID from "../../helpers/generateUUID";
16
16
  import Label from "../Label/Label";
17
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
17
+ import HelperErrorText, {
18
+ HelperErrorTextType,
19
+ } from "../HelperErrorText/HelperErrorText";
18
20
  import TextInput from "../TextInput/TextInput";
19
21
  import { TextInputTypes } from "../TextInput/TextInputTypes";
20
22
 
@@ -26,12 +28,12 @@ export interface SliderProps {
26
28
  */
27
29
  defaultValue?: number | number[];
28
30
  /** Optional string to populate the HelperErrorText for standard state */
29
- helperText?: string;
31
+ helperText?: HelperErrorTextType;
30
32
  /** ID that other components can cross reference for accessibility purposes. */
31
33
  id?: string;
32
34
  /** Optional string to populate the `HelperErrorText` for the error state
33
35
  * when `isInvalid` is true. */
34
- invalidText?: string;
36
+ invalidText?: HelperErrorTextType;
35
37
  /** Adds the 'disabled' state to the slider and text input(s) when true. */
36
38
  isDisabled?: boolean;
37
39
  /** Adds the 'invalid' state to the slider and text input(s) when true. */
@@ -97,9 +99,14 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
97
99
  showValues = true,
98
100
  step = 1,
99
101
  } = props;
100
- const [currentValue, setCurrentValue] = React.useState<typeof defaultValue>(
101
- defaultValue
102
- );
102
+ // For the RangeSlider, if the defaultValue is not an array, then we set
103
+ // the defaultValue to an array with the min and max values.
104
+ const rangeSliderDefault =
105
+ typeof defaultValue === "number" ? [min, max] : defaultValue;
106
+ // We need to set the default value correctly for both types of sliders.
107
+ const finalDevaultValue = isRangeSlider ? rangeSliderDefault : defaultValue;
108
+ const [currentValue, setCurrentValue] =
109
+ React.useState<typeof defaultValue>(finalDevaultValue);
103
110
  let finalIsInvalid = isInvalid;
104
111
  // In the Range Slider, if the first value is bigger than the second value,
105
112
  // then set the invalid state.
@@ -107,7 +114,9 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
107
114
  finalIsInvalid = true;
108
115
  }
109
116
  const optReqText = isRequired ? "Required" : "Optional";
110
- const footnote = finalIsInvalid ? invalidText : helperText;
117
+ const footnote: HelperErrorTextType = finalIsInvalid
118
+ ? invalidText
119
+ : helperText;
111
120
  const styles = useMultiStyleConfig("CustomSlider", {
112
121
  isDisabled,
113
122
  isInvalid: finalIsInvalid,
@@ -127,7 +136,7 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
127
136
  onChange: (val) => setCurrentValue(val),
128
137
  // Call the passed in `onChange` function prop to get the
129
138
  // *final* value once a user stops dragging the slider.
130
- onChangeEnd: (val) => onChange(val),
139
+ onChangeEnd: (val) => onChange && onChange(val),
131
140
  step,
132
141
  };
133
142
  // Props that the two `TextInput` components use.
@@ -293,9 +302,11 @@ export default function Slider(props: React.PropsWithChildren<SliderProps>) {
293
302
 
294
303
  {footnote && showHelperInvalidText && (
295
304
  <Box __css={styles.helper}>
296
- <HelperErrorText id={`${id}-helperText`} isInvalid={finalIsInvalid}>
297
- {footnote}
298
- </HelperErrorText>
305
+ <HelperErrorText
306
+ id={`${id}-helperText`}
307
+ isInvalid={finalIsInvalid}
308
+ text={footnote}
309
+ />
299
310
  </Box>
300
311
  )}
301
312
  </Box>
@@ -61,6 +61,7 @@ exports[`Slider Range Slider renders the UI snapshot correctly 1`] = `
61
61
  >
62
62
  <div
63
63
  className="chakra-slider__track css-0"
64
+ data-testid="chakra-range-slider-track"
64
65
  id="slider-track-defaultRangeSlider"
65
66
  style={
66
67
  Object {
@@ -168,11 +169,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 1`] = `
168
169
  aria-atomic={true}
169
170
  aria-live="off"
170
171
  className=" css-0"
172
+ dangerouslySetInnerHTML={
173
+ Object {
174
+ "__html": "Component helper text.",
175
+ }
176
+ }
171
177
  data-isinvalid={false}
172
178
  id="defaultRangeSlider-helperText"
173
- >
174
- Component helper text.
175
- </div>
179
+ />
176
180
  </div>
177
181
  </div>
178
182
  `;
@@ -239,6 +243,7 @@ exports[`Slider Range Slider renders the UI snapshot correctly 2`] = `
239
243
  >
240
244
  <div
241
245
  className="chakra-slider__track css-0"
246
+ data-testid="chakra-range-slider-track"
242
247
  id="slider-track-errored"
243
248
  style={
244
249
  Object {
@@ -347,11 +352,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 2`] = `
347
352
  aria-atomic={true}
348
353
  aria-live="polite"
349
354
  className=" css-0"
355
+ dangerouslySetInnerHTML={
356
+ Object {
357
+ "__html": "Component error text :(",
358
+ }
359
+ }
350
360
  data-isinvalid={true}
351
361
  id="errored-helperText"
352
- >
353
- Component error text :(
354
- </div>
362
+ />
355
363
  </div>
356
364
  </div>
357
365
  `;
@@ -418,6 +426,7 @@ exports[`Slider Range Slider renders the UI snapshot correctly 3`] = `
418
426
  >
419
427
  <div
420
428
  className="chakra-slider__track css-0"
429
+ data-testid="chakra-range-slider-track"
421
430
  id="slider-track-required"
422
431
  style={
423
432
  Object {
@@ -526,11 +535,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 3`] = `
526
535
  aria-atomic={true}
527
536
  aria-live="off"
528
537
  className=" css-0"
538
+ dangerouslySetInnerHTML={
539
+ Object {
540
+ "__html": "Component helper text.",
541
+ }
542
+ }
529
543
  data-isinvalid={false}
530
544
  id="required-helperText"
531
- >
532
- Component helper text.
533
- </div>
545
+ />
534
546
  </div>
535
547
  </div>
536
548
  `;
@@ -598,6 +610,7 @@ exports[`Slider Range Slider renders the UI snapshot correctly 4`] = `
598
610
  <div
599
611
  className="chakra-slider__track css-0"
600
612
  data-disabled=""
613
+ data-testid="chakra-range-slider-track"
601
614
  id="slider-track-disabled"
602
615
  style={
603
616
  Object {
@@ -705,11 +718,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 4`] = `
705
718
  aria-atomic={true}
706
719
  aria-live="off"
707
720
  className=" css-0"
721
+ dangerouslySetInnerHTML={
722
+ Object {
723
+ "__html": "Component helper text.",
724
+ }
725
+ }
708
726
  data-isinvalid={false}
709
727
  id="disabled-helperText"
710
- >
711
- Component helper text.
712
- </div>
728
+ />
713
729
  </div>
714
730
  </div>
715
731
  `;
@@ -763,6 +779,7 @@ exports[`Slider Range Slider renders the UI snapshot correctly 5`] = `
763
779
  >
764
780
  <div
765
781
  className="chakra-slider__track css-0"
782
+ data-testid="chakra-range-slider-track"
766
783
  id="slider-track-noLabels"
767
784
  style={
768
785
  Object {
@@ -903,6 +920,7 @@ exports[`Slider Range Slider renders the UI snapshot correctly 6`] = `
903
920
  >
904
921
  <div
905
922
  className="chakra-slider__track css-0"
923
+ data-testid="chakra-range-slider-track"
906
924
  id="slider-track-noVisibleValues"
907
925
  style={
908
926
  Object {
@@ -986,11 +1004,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 6`] = `
986
1004
  aria-atomic={true}
987
1005
  aria-live="off"
988
1006
  className=" css-0"
1007
+ dangerouslySetInnerHTML={
1008
+ Object {
1009
+ "__html": "Component helper text.",
1010
+ }
1011
+ }
989
1012
  data-isinvalid={false}
990
1013
  id="noVisibleValues-helperText"
991
- >
992
- Component helper text.
993
- </div>
1014
+ />
994
1015
  </div>
995
1016
  </div>
996
1017
  `;
@@ -1020,6 +1041,7 @@ exports[`Slider Range Slider renders the UI snapshot correctly 7`] = `
1020
1041
  >
1021
1042
  <div
1022
1043
  className="chakra-slider__track css-0"
1044
+ data-testid="chakra-range-slider-track"
1023
1045
  id="slider-track-onlySlider"
1024
1046
  style={
1025
1047
  Object {
@@ -1226,11 +1248,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 1`] = `
1226
1248
  aria-atomic={true}
1227
1249
  aria-live="off"
1228
1250
  className=" css-0"
1251
+ dangerouslySetInnerHTML={
1252
+ Object {
1253
+ "__html": "Component helper text.",
1254
+ }
1255
+ }
1229
1256
  data-isinvalid={false}
1230
1257
  id="defaultSlider-helperText"
1231
- >
1232
- Component helper text.
1233
- </div>
1258
+ />
1234
1259
  </div>
1235
1260
  </div>
1236
1261
  `;
@@ -1363,11 +1388,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 2`] = `
1363
1388
  aria-atomic={true}
1364
1389
  aria-live="polite"
1365
1390
  className=" css-0"
1391
+ dangerouslySetInnerHTML={
1392
+ Object {
1393
+ "__html": "Component error text :(",
1394
+ }
1395
+ }
1366
1396
  data-isinvalid={true}
1367
1397
  id="errored-helperText"
1368
- >
1369
- Component error text :(
1370
- </div>
1398
+ />
1371
1399
  </div>
1372
1400
  </div>
1373
1401
  `;
@@ -1500,11 +1528,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 3`] = `
1500
1528
  aria-atomic={true}
1501
1529
  aria-live="off"
1502
1530
  className=" css-0"
1531
+ dangerouslySetInnerHTML={
1532
+ Object {
1533
+ "__html": "Component helper text.",
1534
+ }
1535
+ }
1503
1536
  data-isinvalid={false}
1504
1537
  id="required-helperText"
1505
- >
1506
- Component helper text.
1507
- </div>
1538
+ />
1508
1539
  </div>
1509
1540
  </div>
1510
1541
  `;
@@ -1638,11 +1669,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 4`] = `
1638
1669
  aria-atomic={true}
1639
1670
  aria-live="off"
1640
1671
  className=" css-0"
1672
+ dangerouslySetInnerHTML={
1673
+ Object {
1674
+ "__html": "Component helper text.",
1675
+ }
1676
+ }
1641
1677
  data-isinvalid={false}
1642
1678
  id="disabled-helperText"
1643
- >
1644
- Component helper text.
1645
- </div>
1679
+ />
1646
1680
  </div>
1647
1681
  </div>
1648
1682
  `;
@@ -1855,11 +1889,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 6`] = `
1855
1889
  aria-atomic={true}
1856
1890
  aria-live="off"
1857
1891
  className=" css-0"
1892
+ dangerouslySetInnerHTML={
1893
+ Object {
1894
+ "__html": "Component helper text.",
1895
+ }
1896
+ }
1858
1897
  data-isinvalid={false}
1859
1898
  id="noVisibleValues-helperText"
1860
- >
1861
- Component helper text.
1862
- </div>
1899
+ />
1863
1900
  </div>
1864
1901
  </div>
1865
1902
  `;
@@ -1,18 +1,23 @@
1
+ import { VStack } from "@chakra-ui/react";
1
2
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
3
  ArgsTable,
4
+ Canvas,
6
5
  Description,
7
- } from "@storybook/addon-docs/blocks";
6
+ Meta,
7
+ Story,
8
+ } from "@storybook/addon-docs";
8
9
  import { withDesign } from "storybook-addon-designs";
9
- import { VStack } from "@chakra-ui/react";
10
10
 
11
11
  import StatusBadge from "./StatusBadge";
12
12
  import { StatusBadgeTypes } from "./StatusBadgeTypes";
13
- import getCSSVariable from "../../helpers/getCSSVariable";
14
13
  import { getCategory } from "../../utils/componentCategories";
15
14
  import DSProvider from "../../theme/provider";
15
+ import { getStorybookEnumValues } from "../../utils/utils";
16
+
17
+ export const enumValues = getStorybookEnumValues(
18
+ StatusBadgeTypes,
19
+ "StatusBadgeTypes"
20
+ );
16
21
 
17
22
  <Meta
18
23
  title={getCategory("StatusBadge")}
@@ -21,19 +26,20 @@ import DSProvider from "../../theme/provider";
21
26
  parameters={{
22
27
  design: {
23
28
  type: "figma",
24
- url:
25
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11256%3A0",
29
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11256%3A0",
26
30
  },
27
31
  jest: ["StatusBadge.test.tsx"],
28
32
  }}
29
33
  argTypes={{
30
- className: { table: { disable: true } },
31
- id: { table: { disable: true } },
34
+ className: { control: false },
35
+ id: { control: false },
32
36
  level: {
33
- control: {
34
- type: "select",
35
- },
36
- options: Object.values(StatusBadgeTypes).map((value) => value),
37
+ control: { type: "select" },
38
+ table: { defaultValue: { summary: "StatusBadgeTypes.Low" } },
39
+ options: enumValues.options,
40
+ },
41
+ text: {
42
+ description: "Only used for Storybook",
37
43
  },
38
44
  }}
39
45
  />
@@ -49,14 +55,23 @@ import DSProvider from "../../theme/provider";
49
55
 
50
56
  <Canvas withToolbar>
51
57
  <Story
52
- name="Basic with props"
53
- args={{ level: StatusBadgeTypes.Low, text: "Registration Required" }}
58
+ name="StatusBadge"
59
+ args={{
60
+ className: undefined,
61
+ id: "statusBadge-id",
62
+ level: "StatusBadgeTypes.Low",
63
+ text: "Registration Required",
64
+ }}
54
65
  >
55
- {(args) => <StatusBadge {...args}>{args.text}</StatusBadge>}
66
+ {(args) => (
67
+ <StatusBadge level={enumValues.getValue(args.level)}>
68
+ {args.text}
69
+ </StatusBadge>
70
+ )}
56
71
  </Story>
57
72
  </Canvas>
58
73
 
59
- <ArgsTable story="Basic with props" />
74
+ <ArgsTable story="StatusBadge" />
60
75
 
61
76
  ## Patterns
62
77
 
@@ -9,7 +9,8 @@ export interface StatusBadgeProps {
9
9
  className?: string;
10
10
  /** ID that other components can cross reference for accessibility purposes */
11
11
  id?: string;
12
- /** Level of the status badge through StatusBadgeTypes. */
12
+ /** Level of the status badge through StatusBadgeTypes. Defaults to
13
+ * `StatusBadgeTypes.Low`. */
13
14
  level?: StatusBadgeTypes;
14
15
  }
15
16