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

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 (275) hide show
  1. package/CHANGELOG.md +91 -1
  2. package/README.md +1 -1
  3. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -0
  4. package/dist/components/Button/Button.d.ts +6 -6
  5. package/dist/components/Button/ButtonTypes.d.ts +0 -1
  6. package/dist/components/Card/Card.d.ts +6 -4
  7. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  8. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
  9. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
  10. package/dist/components/DatePicker/DatePicker.d.ts +3 -2
  11. package/dist/components/Form/Form.d.ts +2 -2
  12. package/dist/components/Heading/Heading.d.ts +7 -3
  13. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  14. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  15. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -2
  16. package/dist/components/Icons/Icon.d.ts +4 -4
  17. package/dist/components/Icons/IconSvgs.d.ts +1 -21
  18. package/dist/components/Icons/IconTypes.d.ts +1 -23
  19. package/dist/components/Image/Image.d.ts +11 -3
  20. package/dist/components/Image/ImageTypes.d.ts +3 -1
  21. package/dist/components/Link/LinkTypes.d.ts +1 -0
  22. package/dist/components/Logo/Logo.d.ts +28 -0
  23. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  24. package/dist/components/Logo/LogoTypes.d.ts +30 -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 +3 -2
  30. package/dist/components/SearchBar/SearchBar.d.ts +10 -2
  31. package/dist/components/Select/Select.d.ts +5 -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 +23 -0
  38. package/dist/components/Template/Template.d.ts +8 -3
  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 +48 -0
  42. package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
  43. package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
  44. package/dist/design-system-react-components.cjs.development.js +5989 -5490
  45. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  46. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  47. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  48. package/dist/design-system-react-components.esm.js +6057 -5551
  49. package/dist/design-system-react-components.esm.js.map +1 -1
  50. package/dist/index.d.ts +11 -4
  51. package/dist/styles.css +2 -2
  52. package/dist/theme/components/breadcrumb.d.ts +9 -0
  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 +47 -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 +8 -4
  64. package/dist/theme/components/searchBar.d.ts +7 -13
  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 +2 -0
  69. package/dist/theme/components/toggle.d.ts +71 -0
  70. package/dist/theme/foundations/spacing.d.ts +2 -0
  71. package/dist/utils/utils.d.ts +10 -0
  72. package/package.json +2 -3
  73. package/src/__tests__/utils/utils.test.ts +23 -1
  74. package/src/components/Accordion/Accordion.stories.mdx +15 -14
  75. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  76. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  77. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  78. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +50 -14
  79. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +20 -0
  80. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -0
  81. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +198 -0
  82. package/src/components/Button/Button.stories.mdx +93 -48
  83. package/src/components/Button/Button.test.tsx +0 -12
  84. package/src/components/Button/Button.tsx +7 -8
  85. package/src/components/Button/ButtonTypes.tsx +0 -1
  86. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  87. package/src/components/Card/Card.stories.mdx +246 -64
  88. package/src/components/Card/Card.test.tsx +45 -22
  89. package/src/components/Card/Card.tsx +26 -13
  90. package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
  91. package/src/components/Chakra/Box.stories.mdx +3 -3
  92. package/src/components/Chakra/Center.stories.mdx +5 -5
  93. package/src/components/Chakra/Grid.stories.mdx +14 -17
  94. package/src/components/Chakra/Stack.stories.mdx +2 -2
  95. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  96. package/src/components/Checkbox/Checkbox.tsx +13 -8
  97. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  98. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  99. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  100. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  101. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  102. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  103. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  104. package/src/components/DatePicker/DatePicker.test.tsx +8 -6
  105. package/src/components/DatePicker/DatePicker.tsx +10 -6
  106. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
  107. package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
  108. package/src/components/Form/Form.stories.mdx +49 -41
  109. package/src/components/Form/Form.tsx +5 -4
  110. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  111. package/src/components/Heading/Heading.stories.mdx +59 -23
  112. package/src/components/Heading/Heading.test.tsx +82 -18
  113. package/src/components/Heading/Heading.tsx +31 -31
  114. package/src/components/Heading/HeadingTypes.tsx +6 -6
  115. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  116. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  117. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  118. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  119. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  120. package/src/components/Hero/Hero.stories.mdx +72 -53
  121. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +9 -8
  122. package/src/components/HorizontalRule/HorizontalRule.tsx +2 -4
  123. package/src/components/Icons/Icon.stories.mdx +77 -75
  124. package/src/components/Icons/Icon.tsx +4 -5
  125. package/src/components/Icons/IconSvgs.tsx +2 -42
  126. package/src/components/Icons/IconTypes.tsx +1 -24
  127. package/src/components/Image/Image.stories.mdx +214 -104
  128. package/src/components/Image/Image.test.tsx +10 -0
  129. package/src/components/Image/Image.tsx +21 -10
  130. package/src/components/Image/ImageTypes.ts +2 -0
  131. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  132. package/src/components/Label/Label.stories.mdx +21 -20
  133. package/src/components/Link/Link.stories.mdx +103 -53
  134. package/src/components/Link/Link.test.tsx +108 -7
  135. package/src/components/Link/Link.tsx +58 -19
  136. package/src/components/Link/LinkTypes.tsx +1 -0
  137. package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
  138. package/src/components/List/List.stories.mdx +36 -24
  139. package/src/components/Logo/Logo.stories.mdx +220 -0
  140. package/src/components/Logo/Logo.test.tsx +98 -0
  141. package/src/components/Logo/Logo.tsx +97 -0
  142. package/src/components/Logo/LogoSvgs.tsx +34 -0
  143. package/src/components/Logo/LogoTypes.tsx +32 -0
  144. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  145. package/src/components/Modal/Modal.stories.mdx +20 -5
  146. package/src/components/Modal/Modal.tsx +2 -8
  147. package/src/components/Notification/Notification.stories.mdx +96 -40
  148. package/src/components/Notification/Notification.test.tsx +62 -16
  149. package/src/components/Notification/Notification.tsx +26 -9
  150. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
  151. package/src/components/Pagination/Pagination.stories.mdx +18 -8
  152. package/src/components/Pagination/Pagination.tsx +1 -1
  153. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
  154. package/src/components/Placeholder/Placeholder.tsx +7 -14
  155. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
  156. package/src/components/Radio/Radio.stories.mdx +39 -19
  157. package/src/components/Radio/Radio.tsx +13 -9
  158. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  159. package/src/components/RadioGroup/RadioGroup.tsx +15 -11
  160. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
  161. package/src/components/SearchBar/SearchBar.Test.tsx +114 -22
  162. package/src/components/SearchBar/SearchBar.stories.mdx +111 -33
  163. package/src/components/SearchBar/SearchBar.tsx +57 -33
  164. package/src/components/Select/Select.stories.mdx +177 -66
  165. package/src/components/Select/Select.test.tsx +2 -2
  166. package/src/components/Select/Select.tsx +22 -12
  167. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  168. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  169. package/src/components/Slider/Slider.stories.mdx +74 -23
  170. package/src/components/Slider/Slider.test.tsx +35 -0
  171. package/src/components/Slider/Slider.tsx +22 -11
  172. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +60 -30
  173. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  174. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  175. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  176. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  177. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  178. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  179. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  180. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  181. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  182. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  183. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  184. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  185. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  186. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  187. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  188. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  189. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  190. package/src/components/Table/Table.stories.mdx +66 -0
  191. package/src/components/Table/Table.test.tsx +60 -0
  192. package/src/components/Table/Table.tsx +116 -0
  193. package/src/components/Tabs/Tabs.stories.mdx +19 -13
  194. package/src/components/Tabs/Tabs.test.tsx +1 -1
  195. package/src/components/Template/Template.stories.mdx +57 -49
  196. package/src/components/Template/Template.test.tsx +65 -5
  197. package/src/components/Template/Template.tsx +35 -5
  198. package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -0
  199. package/src/components/Text/Text.stories.mdx +33 -11
  200. package/src/components/Text/Text.tsx +2 -2
  201. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  202. package/src/components/TextInput/TextInput.test.tsx +96 -0
  203. package/src/components/TextInput/TextInput.tsx +12 -8
  204. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  205. package/src/components/Toggle/Toggle.stories.mdx +200 -0
  206. package/src/components/Toggle/Toggle.test.tsx +140 -0
  207. package/src/components/Toggle/Toggle.tsx +123 -0
  208. package/src/components/Toggle/ToggleSizes.tsx +4 -0
  209. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
  210. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
  211. package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
  212. package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
  213. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
  214. package/src/docs/Chakra.stories.mdx +5 -8
  215. package/src/docs/Intro.stories.mdx +2 -2
  216. package/src/index.ts +13 -4
  217. package/src/styles/base/_03-base.scss +1 -1
  218. package/src/styles/base/_place-holder.scss +7 -7
  219. package/src/styles.scss +1 -5
  220. package/src/theme/components/breadcrumb.ts +14 -4
  221. package/src/theme/components/button.ts +5 -12
  222. package/src/theme/components/card.ts +9 -7
  223. package/src/theme/components/checkbox.ts +1 -1
  224. package/src/theme/components/customTable.ts +50 -0
  225. package/src/theme/components/datePicker.ts +1 -1
  226. package/src/theme/components/global.ts +7 -7
  227. package/src/theme/components/heading.ts +13 -11
  228. package/src/theme/components/helperErrorText.ts +1 -1
  229. package/src/theme/components/icon.ts +2 -2
  230. package/src/theme/components/image.ts +9 -1
  231. package/src/theme/components/link.ts +17 -5
  232. package/src/theme/components/list.ts +1 -3
  233. package/src/theme/components/logo.ts +54 -0
  234. package/src/theme/components/notification.ts +9 -7
  235. package/src/theme/components/searchBar.ts +7 -13
  236. package/src/theme/components/select.ts +1 -0
  237. package/src/theme/components/statusBadge.ts +1 -1
  238. package/src/theme/components/structuredContent.ts +54 -0
  239. package/src/theme/components/template.ts +10 -10
  240. package/src/theme/components/text.ts +6 -6
  241. package/src/theme/components/textInput.ts +1 -0
  242. package/src/theme/components/toggle.ts +69 -0
  243. package/src/theme/components/videoPlayer.ts +0 -2
  244. package/src/theme/foundations/global.ts +2 -2
  245. package/src/theme/foundations/spacing.ts +3 -0
  246. package/src/theme/foundations/typography.ts +84 -12
  247. package/src/theme/index.ts +8 -0
  248. package/src/utils/componentCategories.ts +4 -2
  249. package/src/utils/utils.ts +17 -0
  250. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  251. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  252. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  253. package/dist/components/Input/Input.d.ts +0 -36
  254. package/dist/components/Input/Input.stories.d.ts +0 -29
  255. package/dist/components/Input/InputTypes.d.ts +0 -6
  256. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  257. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  258. package/dist/helpers/getCSSVariable.d.ts +0 -1
  259. package/dist/interfaces.d.ts +0 -3
  260. package/dist/utils/bem.d.ts +0 -1
  261. package/src/__tests__/utils/bem.test.ts +0 -37
  262. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  263. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  264. package/src/components/CardEdition/CardEdition.tsx +0 -60
  265. package/src/components/CardEdition/_CardEdition.scss +0 -137
  266. package/src/components/Input/Input.stories.tsx +0 -133
  267. package/src/components/Input/Input.test.tsx +0 -266
  268. package/src/components/Input/Input.tsx +0 -81
  269. package/src/components/Input/InputTypes.tsx +0 -8
  270. package/src/components/Input/_Input.scss +0 -78
  271. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  272. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  273. package/src/helpers/getCSSVariable.tsx +0 -5
  274. package/src/interfaces.ts +0 -3
  275. 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>
@@ -168,11 +168,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 1`] = `
168
168
  aria-atomic={true}
169
169
  aria-live="off"
170
170
  className=" css-0"
171
+ dangerouslySetInnerHTML={
172
+ Object {
173
+ "__html": "Component helper text.",
174
+ }
175
+ }
171
176
  data-isinvalid={false}
172
177
  id="defaultRangeSlider-helperText"
173
- >
174
- Component helper text.
175
- </div>
178
+ />
176
179
  </div>
177
180
  </div>
178
181
  `;
@@ -347,11 +350,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 2`] = `
347
350
  aria-atomic={true}
348
351
  aria-live="polite"
349
352
  className=" css-0"
353
+ dangerouslySetInnerHTML={
354
+ Object {
355
+ "__html": "Component error text :(",
356
+ }
357
+ }
350
358
  data-isinvalid={true}
351
359
  id="errored-helperText"
352
- >
353
- Component error text :(
354
- </div>
360
+ />
355
361
  </div>
356
362
  </div>
357
363
  `;
@@ -526,11 +532,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 3`] = `
526
532
  aria-atomic={true}
527
533
  aria-live="off"
528
534
  className=" css-0"
535
+ dangerouslySetInnerHTML={
536
+ Object {
537
+ "__html": "Component helper text.",
538
+ }
539
+ }
529
540
  data-isinvalid={false}
530
541
  id="required-helperText"
531
- >
532
- Component helper text.
533
- </div>
542
+ />
534
543
  </div>
535
544
  </div>
536
545
  `;
@@ -705,11 +714,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 4`] = `
705
714
  aria-atomic={true}
706
715
  aria-live="off"
707
716
  className=" css-0"
717
+ dangerouslySetInnerHTML={
718
+ Object {
719
+ "__html": "Component helper text.",
720
+ }
721
+ }
708
722
  data-isinvalid={false}
709
723
  id="disabled-helperText"
710
- >
711
- Component helper text.
712
- </div>
724
+ />
713
725
  </div>
714
726
  </div>
715
727
  `;
@@ -986,11 +998,14 @@ exports[`Slider Range Slider renders the UI snapshot correctly 6`] = `
986
998
  aria-atomic={true}
987
999
  aria-live="off"
988
1000
  className=" css-0"
1001
+ dangerouslySetInnerHTML={
1002
+ Object {
1003
+ "__html": "Component helper text.",
1004
+ }
1005
+ }
989
1006
  data-isinvalid={false}
990
1007
  id="noVisibleValues-helperText"
991
- >
992
- Component helper text.
993
- </div>
1008
+ />
994
1009
  </div>
995
1010
  </div>
996
1011
  `;
@@ -1226,11 +1241,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 1`] = `
1226
1241
  aria-atomic={true}
1227
1242
  aria-live="off"
1228
1243
  className=" css-0"
1244
+ dangerouslySetInnerHTML={
1245
+ Object {
1246
+ "__html": "Component helper text.",
1247
+ }
1248
+ }
1229
1249
  data-isinvalid={false}
1230
1250
  id="defaultSlider-helperText"
1231
- >
1232
- Component helper text.
1233
- </div>
1251
+ />
1234
1252
  </div>
1235
1253
  </div>
1236
1254
  `;
@@ -1363,11 +1381,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 2`] = `
1363
1381
  aria-atomic={true}
1364
1382
  aria-live="polite"
1365
1383
  className=" css-0"
1384
+ dangerouslySetInnerHTML={
1385
+ Object {
1386
+ "__html": "Component error text :(",
1387
+ }
1388
+ }
1366
1389
  data-isinvalid={true}
1367
1390
  id="errored-helperText"
1368
- >
1369
- Component error text :(
1370
- </div>
1391
+ />
1371
1392
  </div>
1372
1393
  </div>
1373
1394
  `;
@@ -1500,11 +1521,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 3`] = `
1500
1521
  aria-atomic={true}
1501
1522
  aria-live="off"
1502
1523
  className=" css-0"
1524
+ dangerouslySetInnerHTML={
1525
+ Object {
1526
+ "__html": "Component helper text.",
1527
+ }
1528
+ }
1503
1529
  data-isinvalid={false}
1504
1530
  id="required-helperText"
1505
- >
1506
- Component helper text.
1507
- </div>
1531
+ />
1508
1532
  </div>
1509
1533
  </div>
1510
1534
  `;
@@ -1638,11 +1662,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 4`] = `
1638
1662
  aria-atomic={true}
1639
1663
  aria-live="off"
1640
1664
  className=" css-0"
1665
+ dangerouslySetInnerHTML={
1666
+ Object {
1667
+ "__html": "Component helper text.",
1668
+ }
1669
+ }
1641
1670
  data-isinvalid={false}
1642
1671
  id="disabled-helperText"
1643
- >
1644
- Component helper text.
1645
- </div>
1672
+ />
1646
1673
  </div>
1647
1674
  </div>
1648
1675
  `;
@@ -1855,11 +1882,14 @@ exports[`Slider Single Slider renders the UI snapshot correctly 6`] = `
1855
1882
  aria-atomic={true}
1856
1883
  aria-live="off"
1857
1884
  className=" css-0"
1885
+ dangerouslySetInnerHTML={
1886
+ Object {
1887
+ "__html": "Component helper text.",
1888
+ }
1889
+ }
1858
1890
  data-isinvalid={false}
1859
1891
  id="noVisibleValues-helperText"
1860
- >
1861
- Component helper text.
1862
- </div>
1892
+ />
1863
1893
  </div>
1864
1894
  </div>
1865
1895
  `;
@@ -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