@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,16 +1,22 @@
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 { getCategory } from "../../utils/componentCategories";
11
10
  import DatePicker from "./DatePicker";
12
11
  import { DatePickerTypes } from "./DatePickerTypes";
12
+ import { getCategory } from "../../utils/componentCategories";
13
13
  import DSProvider from "../../theme/provider";
14
+ import { getStorybookEnumValues } from "../../utils/utils";
15
+
16
+ export const enumValues = getStorybookEnumValues(
17
+ DatePickerTypes,
18
+ "DatePickerTypes"
19
+ );
14
20
 
15
21
  <Meta
16
22
  title={getCategory("DatePicker")}
@@ -19,18 +25,51 @@ import DSProvider from "../../theme/provider";
19
25
  parameters={{
20
26
  design: {
21
27
  type: "figma",
22
- url:
23
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11689%3A0",
28
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11689%3A0",
24
29
  },
25
30
  jest: ["DatePicker.test.tsx"],
26
31
  }}
27
32
  argTypes={{
28
- className: { table: { disable: true } },
29
- id: { table: { disable: true } },
30
- nameFrom: { table: { disable: true } },
31
- nameTo: { table: { disable: true } },
32
- onChange: { table: { disable: true } },
33
- refTo: { table: { disable: true } },
33
+ className: { control: false },
34
+ dateFormat: {
35
+ table: { defaultValue: { summary: "yyyy-MM-dd" } },
36
+ },
37
+ dateType: {
38
+ control: { type: "select" },
39
+ table: { defaultValue: { summary: "DatePickerTypes.Full" } },
40
+ options: enumValues.options,
41
+ },
42
+ id: { control: false },
43
+ isDateRange: {
44
+ table: { defaultValue: { summary: false } },
45
+ },
46
+ isDisabled: {
47
+ table: { defaultValue: { summary: false } },
48
+ },
49
+ isInvalid: {
50
+ table: { defaultValue: { summary: false } },
51
+ },
52
+ isRequired: {
53
+ table: { defaultValue: { summary: false } },
54
+ },
55
+ key: { table: { disable: true } },
56
+ labelText: {
57
+ table: { defaultValue: { summary: "From" } },
58
+ },
59
+ nameFrom: { control: false },
60
+ nameTo: { control: false },
61
+ onChange: { control: false },
62
+ ref: { table: { disable: true } },
63
+ refTo: { control: false },
64
+ showHelperInvalidText: {
65
+ table: { defaultValue: { summary: true } },
66
+ },
67
+ showLabel: {
68
+ table: { defaultValue: { summary: true } },
69
+ },
70
+ showOptReqLabel: {
71
+ table: { defaultValue: { summary: true } },
72
+ },
34
73
  }}
35
74
  />
36
75
 
@@ -39,7 +78,7 @@ import DSProvider from "../../theme/provider";
39
78
  | Component Version | DS Version |
40
79
  | ----------------- | ---------- |
41
80
  | Added | `0.24.0` |
42
- | Latest | `0.25.3` |
81
+ | Latest | `0.25.9` |
43
82
 
44
83
  <Description of={DatePicker} />
45
84
 
@@ -49,13 +88,15 @@ also be added through props.
49
88
 
50
89
  <Canvas withToolbar>
51
90
  <Story
52
- name="DatePicker"
91
+ name="DatePicker with Controls"
53
92
  args={{
93
+ className: undefined,
54
94
  dateFormat: "yyyy-MM-dd",
55
- dateType: DatePickerTypes.Full,
95
+ dateType: "DatePickerTypes.Full",
56
96
  helperText: "Note that the Library may be closed on Sundays.",
57
97
  helperTextFrom: "Select start date.",
58
98
  helperTextTo: "Select end date.",
99
+ id: "datePicker-id",
59
100
  initialDate: "1/1/2021",
60
101
  initialDateTo: "1/30/2021",
61
102
  invalidText: "Please select a valid date.",
@@ -68,16 +109,20 @@ also be added through props.
68
109
  minDate: "1/1/2021",
69
110
  nameFrom: "visit-dates-from",
70
111
  nameTo: "visit-dates-to",
112
+ onChange: undefined,
113
+ refTo: undefined,
71
114
  showHelperInvalidText: true,
72
115
  showLabel: true,
73
116
  showOptReqLabel: true,
74
117
  }}
75
118
  >
76
- {(args) => <DatePicker id="visit-dates" {...args} />}
119
+ {(args) => (
120
+ <DatePicker {...args} dateType={enumValues.getValue(args.dateType)} />
121
+ )}
77
122
  </Story>
78
123
  </Canvas>
79
124
 
80
- <ArgsTable story="DatePicker" />
125
+ <ArgsTable story="DatePicker with Controls" />
81
126
 
82
127
  ## Date Range
83
128
 
@@ -368,7 +368,7 @@ describe("DatePicker", () => {
368
368
  // Note: Have to add an initial date so that the snapshot tests always
369
369
  // pass. Otherwise, it'll use the _current_ date which changes
370
370
  // based on the day it is tested and is not what we want.
371
- it.skip("renders the UI snapshot correctly", () => {
371
+ it("renders the UI snapshot correctly", () => {
372
372
  const basic = renderer
373
373
  .create(
374
374
  <DatePicker
@@ -805,10 +805,12 @@ describe("DatePicker", () => {
805
805
  const input = screen.getByLabelText(
806
806
  /Select the year you want to visit NYPL/i
807
807
  );
808
- const [year] = getTodaysValues();
808
+ const mockYear = 2021;
809
809
 
810
810
  expect(
811
- screen.queryByText(`${(year as any) - 4} - ${(year as any) + 7}`)
811
+ screen.queryByText(
812
+ `${(mockYear as any) - 4} - ${(mockYear as any) + 7}`
813
+ )
812
814
  ).not.toBeInTheDocument();
813
815
 
814
816
  userEvent.click(input);
@@ -817,16 +819,16 @@ describe("DatePicker", () => {
817
819
  // before the current year to seven years after the current year. For year
818
820
  // 2021, it will display 2017 - 2028.
819
821
  expect(
820
- screen.getByText(`${(year as any) - 4} - ${(year as any) + 7}`)
822
+ screen.getByText(`${(mockYear as any) - 4} - ${(mockYear as any) + 7}`)
821
823
  ).toBeInTheDocument();
822
824
  // This calendar displays 12 years to select from.
823
825
  // It should display the four previous years from the current year.
824
826
  for (let i = 4; i > 0; i--) {
825
- expect(screen.getByText((year as any) - i)).toBeInTheDocument();
827
+ expect(screen.getByText((mockYear as any) - i)).toBeInTheDocument();
826
828
  }
827
829
  // It should display the eight next years from the current year.
828
830
  for (let i = 0; i < 8; i++) {
829
- expect(screen.getByText((year as any) + i)).toBeInTheDocument();
831
+ expect(screen.getByText((mockYear as any) + i)).toBeInTheDocument();
830
832
  }
831
833
  });
832
834
 
@@ -5,7 +5,9 @@ import { DatePickerTypes } from "./DatePickerTypes";
5
5
  import Fieldset from "../Fieldset/Fieldset";
6
6
  import { FormRow, FormField } from "../Form/Form";
7
7
  import { FormSpacing } from "../Form/FormTypes";
8
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
8
+ import HelperErrorText, {
9
+ HelperErrorTextType,
10
+ } from "../HelperErrorText/HelperErrorText";
9
11
  import TextInput, {
10
12
  InputProps,
11
13
  TextInputRefType,
@@ -74,7 +76,7 @@ export interface DatePickerProps extends DatePickerWrapperProps {
74
76
  /** DatePicker date types that can be rendered. */
75
77
  dateType?: DatePickerTypes;
76
78
  /** Populates the `HelperErrorText` component in this component. */
77
- helperText?: string;
79
+ helperText?: HelperErrorTextType;
78
80
  /** Populates the `HelperErrorText` component in the "From" `TextInput` component. */
79
81
  helperTextFrom?: string;
80
82
  /** Populates the `HelperErrorText` component in the "To" `TextInput` component. */
@@ -86,7 +88,7 @@ export interface DatePickerProps extends DatePickerWrapperProps {
86
88
  initialDateTo?: string;
87
89
  /** Populates the `HelperErrorText` error state for both "From"
88
90
  * and "To" input components. */
89
- invalidText?: string;
91
+ invalidText?: HelperErrorTextType;
90
92
  /** Adds the 'disabled' property to the input element(s). */
91
93
  isDisabled?: boolean;
92
94
  /** Adds 'isInvalid' styling. */
@@ -415,9 +417,11 @@ const DatePicker = React.forwardRef<TextInputRefType, DatePickerProps>(
415
417
  )}
416
418
  </DateRangeRow>
417
419
  {helperText && isDateRange && showHelperInvalidText && (
418
- <HelperErrorText id={`${id}-helper-text`} isInvalid={false}>
419
- {helperText}
420
- </HelperErrorText>
420
+ <HelperErrorText
421
+ id={`${id}-helper-text`}
422
+ isInvalid={false}
423
+ text={helperText}
424
+ />
421
425
  )}
422
426
  </DatePickerWrapper>
423
427
  );
@@ -363,11 +363,14 @@ exports[`DatePicker Date Range renders the UI snapshot correctly 4`] = `
363
363
  aria-atomic={true}
364
364
  aria-live="polite"
365
365
  className=" css-0"
366
+ dangerouslySetInnerHTML={
367
+ Object {
368
+ "__html": "Please select a valid date.",
369
+ }
370
+ }
366
371
  data-isinvalid={true}
367
372
  id="invalid-start-helperText"
368
- >
369
- Please select a valid date.
370
- </div>
373
+ />
371
374
  </div>
372
375
  </div>
373
376
  </div>
@@ -415,11 +418,14 @@ exports[`DatePicker Date Range renders the UI snapshot correctly 4`] = `
415
418
  aria-atomic={true}
416
419
  aria-live="polite"
417
420
  className=" css-0"
421
+ dangerouslySetInnerHTML={
422
+ Object {
423
+ "__html": "Please select a valid date.",
424
+ }
425
+ }
418
426
  data-isinvalid={true}
419
427
  id="invalid-end-helperText"
420
- >
421
- Please select a valid date.
422
- </div>
428
+ />
423
429
  </div>
424
430
  </div>
425
431
  </div>
@@ -430,11 +436,14 @@ exports[`DatePicker Date Range renders the UI snapshot correctly 4`] = `
430
436
  aria-atomic={true}
431
437
  aria-live="off"
432
438
  className=" css-0"
439
+ dangerouslySetInnerHTML={
440
+ Object {
441
+ "__html": "Note that the Library may be closed on Sundays.",
442
+ }
443
+ }
433
444
  data-isinvalid={false}
434
445
  id="invalid-helper-text"
435
- >
436
- Note that the Library may be closed on Sundays.
437
- </div>
446
+ />
438
447
  </fieldset>
439
448
  </div>
440
449
  `;
@@ -539,11 +548,14 @@ exports[`DatePicker Date Range renders the UI snapshot correctly 5`] = `
539
548
  aria-atomic={true}
540
549
  aria-live="off"
541
550
  className=" css-0"
551
+ dangerouslySetInnerHTML={
552
+ Object {
553
+ "__html": "Note that the Library may be closed on Sundays.",
554
+ }
555
+ }
542
556
  data-isinvalid={false}
543
557
  id="disabled-helper-text"
544
- >
545
- Note that the Library may be closed on Sundays.
546
- </div>
558
+ />
547
559
  </fieldset>
548
560
  </div>
549
561
  `;
@@ -587,6 +599,7 @@ exports[`DatePicker Single input renders the UI snapshot correctly 1`] = `
587
599
  onClick={[Function]}
588
600
  onFocus={[Function]}
589
601
  required={false}
602
+ step={null}
590
603
  type="text"
591
604
  value="1988-01-02"
592
605
  />
@@ -625,12 +638,9 @@ exports[`DatePicker Single input renders the UI snapshot correctly 2`] = `
625
638
  onClick={[Function]}
626
639
  onFocus={[Function]}
627
640
  required={false}
641
+ step={null}
628
642
  type="text"
629
- <<<<<<< HEAD
630
- value="2021-11-17"
631
- =======
632
643
  value="1988-01-02"
633
- >>>>>>> development
634
644
  />
635
645
  </div>
636
646
  </div>
@@ -678,6 +688,7 @@ exports[`DatePicker Single input renders the UI snapshot correctly 3`] = `
678
688
  onClick={[Function]}
679
689
  onFocus={[Function]}
680
690
  required={false}
691
+ step={null}
681
692
  type="text"
682
693
  value="1988/02/01"
683
694
  />
@@ -729,6 +740,7 @@ exports[`DatePicker Single input renders the UI snapshot correctly 4`] = `
729
740
  onClick={[Function]}
730
741
  onFocus={[Function]}
731
742
  required={false}
743
+ step={null}
732
744
  type="text"
733
745
  value="1988-01-02"
734
746
  />
@@ -740,11 +752,14 @@ exports[`DatePicker Single input renders the UI snapshot correctly 4`] = `
740
752
  aria-atomic={true}
741
753
  aria-live="polite"
742
754
  className=" css-0"
755
+ dangerouslySetInnerHTML={
756
+ Object {
757
+ "__html": "Please select a valid date.",
758
+ }
759
+ }
743
760
  data-isinvalid={true}
744
761
  id="invalid-start-helperText"
745
- >
746
- Please select a valid date.
747
- </div>
762
+ />
748
763
  </div>
749
764
  </div>
750
765
  </div>
@@ -793,6 +808,7 @@ exports[`DatePicker Single input renders the UI snapshot correctly 5`] = `
793
808
  onClick={[Function]}
794
809
  onFocus={[Function]}
795
810
  required={false}
811
+ step={null}
796
812
  type="text"
797
813
  value="1988-01-02"
798
814
  />
@@ -804,11 +820,14 @@ exports[`DatePicker Single input renders the UI snapshot correctly 5`] = `
804
820
  aria-atomic={true}
805
821
  aria-live="off"
806
822
  className=" css-0"
823
+ dangerouslySetInnerHTML={
824
+ Object {
825
+ "__html": "Note that the Library may be closed on Sundays.",
826
+ }
827
+ }
807
828
  data-isinvalid={false}
808
829
  id="disabled-start-helperText"
809
- >
810
- Note that the Library may be closed on Sundays.
811
- </div>
830
+ />
812
831
  </div>
813
832
  </div>
814
833
  </div>
@@ -1,10 +1,10 @@
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
10
  import Fieldset from "./Fieldset";
@@ -20,8 +20,17 @@ import DSProvider from "../../theme/provider";
20
20
  }}
21
21
  argTypes={{
22
22
  children: { table: { disable: true } },
23
- className: { table: { disable: true } },
24
- id: { table: { disable: true } },
23
+ className: { control: false },
24
+ id: { control: false },
25
+ isLegendHidden: {
26
+ table: { defaultValue: { summary: false } },
27
+ },
28
+ isRequired: {
29
+ table: { defaultValue: { summary: false } },
30
+ },
31
+ optReqFlag: {
32
+ table: { defaultValue: { summary: false } },
33
+ },
25
34
  }}
26
35
  />
27
36
 
@@ -36,8 +45,10 @@ import DSProvider from "../../theme/provider";
36
45
 
37
46
  <Canvas withToolbar>
38
47
  <Story
39
- name="Basic"
48
+ name="Fieldset"
40
49
  args={{
50
+ className: undefined,
51
+ id: "fieldset-id",
41
52
  isLegendHidden: false,
42
53
  isRequired: false,
43
54
  legendText: "This is the legend text",
@@ -52,4 +63,4 @@ import DSProvider from "../../theme/provider";
52
63
  </Story>
53
64
  </Canvas>
54
65
 
55
- <ArgsTable story="Basic" />
66
+ <ArgsTable story="Fieldset" />
@@ -1,31 +1,33 @@
1
+ import { action } from "@storybook/addon-actions";
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 { getCategory } from "../../utils/componentCategories";
10
10
 
11
- import Form, { FormRow, FormField } from "./Form";
12
- import { FormSpacing } from "./FormTypes";
13
- import TextInput from "../TextInput/TextInput";
14
- import Radio from "../Radio/Radio";
15
- import RadioGroup from "../RadioGroup/RadioGroup";
11
+ import Button from "../Button/Button";
16
12
  import Checkbox from "../Checkbox/Checkbox";
17
13
  import CheckboxGroup from "../CheckboxGroup/CheckboxGroup";
18
- import Label from "../Label/Label";
19
- import Button from "../Button/Button";
20
- import Select from "../Select/Select";
14
+ import DatePicker from "../DatePicker/DatePicker";
15
+ import { DatePickerTypes } from "../DatePicker/DatePickerTypes";
16
+ import Form, { FormRow, FormField } from "./Form";
17
+ import { FormSpacing } from "./FormTypes";
21
18
  import Heading from "../Heading/Heading";
22
19
  import { HeadingLevels } from "../Heading/HeadingTypes";
23
20
  import HorizontalRule from "../HorizontalRule/HorizontalRule";
24
- import DatePicker from "../DatePicker/DatePicker";
25
- import { DatePickerTypes } from "../DatePicker/DatePickerTypes";
26
- import { action } from "@storybook/addon-actions";
27
-
21
+ import Label from "../Label/Label";
22
+ import Radio from "../Radio/Radio";
23
+ import RadioGroup from "../RadioGroup/RadioGroup";
24
+ import Select from "../Select/Select";
25
+ import TextInput from "../TextInput/TextInput";
26
+ import { getCategory } from "../../utils/componentCategories";
28
27
  import SimpleGrid from "../Grid/SimpleGrid";
28
+ import { getStorybookEnumValues } from "../../utils/utils";
29
+
30
+ export const enumValues = getStorybookEnumValues(FormSpacing, "FormSpacing");
29
31
 
30
32
  <Meta
31
33
  title={getCategory("Form")}
@@ -34,11 +36,23 @@ import SimpleGrid from "../Grid/SimpleGrid";
34
36
  parameters={{
35
37
  design: {
36
38
  type: "figma",
37
- url:
38
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A547",
39
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A547",
39
40
  },
40
41
  jest: ["Form.test.tsx"],
41
42
  }}
43
+ argTypes={{
44
+ action: { control: false },
45
+ id: { control: false },
46
+ method: {
47
+ control: { type: "radio" },
48
+ options: ["get", "post"],
49
+ },
50
+ spacing: {
51
+ control: { type: "select" },
52
+ table: { defaultValue: { summary: "FormSpacing.Large" } },
53
+ options: enumValues.options,
54
+ },
55
+ }}
42
56
  />
43
57
 
44
58
  # Form
@@ -58,23 +72,17 @@ The `Form` component renders a standard `<form>` element and should be used to h
58
72
 
59
73
  <Canvas withToolbar>
60
74
  <Story
61
- name="Form"
75
+ name="Form with Controls"
62
76
  args={{
63
77
  action: "/end/point",
64
- id: "custom-form-id",
78
+ className: undefined,
79
+ id: "form-id",
65
80
  method: "get",
66
- }}
67
- argTypes={{
68
- method: {
69
- control: {
70
- type: "radio",
71
- options: ["get", "post"],
72
- },
73
- },
81
+ spacing: "FormSpacing.Large",
74
82
  }}
75
83
  >
76
84
  {(args) => (
77
- <Form {...args}>
85
+ <Form {...args} spacing={enumValues.getValue(args.spacing)}>
78
86
  <FormRow>
79
87
  <FormField>
80
88
  <TextInput
@@ -95,15 +103,15 @@ The `Form` component renders a standard `<form>` element and should be used to h
95
103
  id="date-range"
96
104
  dateType={DatePickerTypes.Full}
97
105
  dateFormat="yyyy-MM-dd"
98
- dateRange={true}
99
- minDate="1/1/2021"
100
- maxDate="1/1/2022"
101
- labelText="Select the date range you want to visit NYPL"
102
- nameFrom="visit-dates"
103
106
  helperTextFrom="From this date."
104
107
  helperTextTo="To this date."
105
108
  helperText="Select a valid date range."
106
109
  invalidText="Please select a valid date range."
110
+ isDateRange
111
+ labelText="Select the date range you want to visit NYPL"
112
+ minDate="1/1/2021"
113
+ maxDate="1/1/2022"
114
+ nameFrom="visit-dates"
107
115
  showLabel={false}
108
116
  />
109
117
  </FormField>
@@ -188,14 +196,14 @@ The `Form` component renders a standard `<form>` element and should be used to h
188
196
  </Story>
189
197
  </Canvas>
190
198
 
191
- <ArgsTable story="Form" />
199
+ <ArgsTable story="Form with Controls" />
192
200
 
193
201
  ## Spacing Variants
194
202
 
195
- export const formRow = (size) => {
196
- const labelText = `Size: ${size}`;
203
+ export const formRow = (nameString, size) => {
204
+ const labelText = `Size: ${nameString} (${size})`;
197
205
  return (
198
- <li>
206
+ <li key={size}>
199
207
  <Heading level={HeadingLevels.Three}>{labelText}</Heading>
200
208
  <Form spacing={size}>
201
209
  <FormRow>
@@ -243,7 +251,7 @@ export const formRow = (size) => {
243
251
  };
244
252
  export const sizes = [];
245
253
  for (const formSpacing in FormSpacing) {
246
- sizes.push(formRow(FormSpacing[formSpacing]));
254
+ sizes.push(formRow(`FormSpacing.${formSpacing}`, FormSpacing[formSpacing]));
247
255
  }
248
256
  export const getForms = (list) => <ul style={{ listStyle: "none" }}>{list}</ul>;
249
257
 
@@ -269,7 +277,7 @@ Below are the spacing variants available with the `FormSpacing` enum.
269
277
  <Story name="Example Code" />
270
278
 
271
279
  ```jsx
272
- <Form action="/end/point" method="get">
280
+ <Form action="/end/point" method="get" spacing={FormSpacing.Large}>
273
281
  <FormField>
274
282
  <TextInput
275
283
  labelText="Username"
@@ -1,7 +1,8 @@
1
+ import { Box } from "@chakra-ui/react";
1
2
  import * as React from "react";
3
+
2
4
  import { FormSpacing } from "./FormTypes";
3
5
  import SimpleGrid from "../Grid/SimpleGrid";
4
- import { Box } from "@chakra-ui/react";
5
6
  import generateUUID from "../../helpers/generateUUID";
6
7
 
7
8
  export interface FormChildProps {
@@ -54,15 +55,15 @@ export function FormField(props: React.PropsWithChildren<FormChildProps>) {
54
55
  );
55
56
  }
56
57
 
57
- /** main Form component */
58
- export default function Form(props: React.ComponentProps<"form"> & FormProps) {
58
+ /** Main Form component */
59
+ export default function Form(props: React.PropsWithChildren<FormProps>) {
59
60
  const {
60
61
  action,
61
62
  children,
62
63
  className,
63
64
  id = generateUUID(),
64
65
  method,
65
- spacing,
66
+ spacing = FormSpacing.Large,
66
67
  } = props;
67
68
 
68
69
  let attributes = {};