@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
@@ -13,8 +13,8 @@ describe("Notification Accessibility", () => {
13
13
  const { container } = render(
14
14
  <Notification
15
15
  id="notificationID"
16
- notificationHeading="Notification Heading"
17
16
  notificationContent={<>Notification content.</>}
17
+ notificationHeading="Notification Heading"
18
18
  />
19
19
  );
20
20
  expect(await axe(container)).toHaveNoViolations();
@@ -29,6 +29,18 @@ describe("Notification Accessibility", () => {
29
29
  );
30
30
  expect(await axe(container)).toHaveNoViolations();
31
31
  });
32
+
33
+ it("passes axe accessibility test without an icon", async () => {
34
+ const { container } = render(
35
+ <Notification
36
+ id="notificationID"
37
+ notificationContent={<>Notification content.</>}
38
+ notificationHeading="Notification Heading"
39
+ showIcon={false}
40
+ />
41
+ );
42
+ expect(await axe(container)).toHaveNoViolations();
43
+ });
32
44
  });
33
45
 
34
46
  describe("Notification", () => {
@@ -37,8 +49,8 @@ describe("Notification", () => {
37
49
  utils = render(
38
50
  <Notification
39
51
  id="notificationID"
40
- notificationHeading="Notification Heading"
41
52
  notificationContent={<>Notification content.</>}
53
+ notificationHeading="Notification Heading"
42
54
  />
43
55
  );
44
56
  });
@@ -51,7 +63,20 @@ describe("Notification", () => {
51
63
  expect(screen.getByText("Notification content.")).toBeInTheDocument();
52
64
  });
53
65
 
54
- it("renders without Icon", () => {
66
+ it("renders with an Icon", () => {
67
+ // The Icon's role is "img".
68
+ expect(screen.queryByRole("img")).toBeInTheDocument();
69
+ });
70
+
71
+ it("does not render an Icon", () => {
72
+ utils.rerender(
73
+ <Notification
74
+ id="notificationID"
75
+ notificationContent={<>Notification content.</>}
76
+ notificationHeading="Notification Heading"
77
+ showIcon={false}
78
+ />
79
+ );
55
80
  // The Icon's role is "img".
56
81
  expect(screen.queryByRole("img")).not.toBeInTheDocument();
57
82
  });
@@ -59,18 +84,18 @@ describe("Notification", () => {
59
84
  it("renders a custom Icon component", () => {
60
85
  utils.rerender(
61
86
  <Notification
62
- id="notificationID"
63
87
  icon={
64
88
  <Icon
65
89
  id="custom-icon"
90
+ className="custom-icon"
91
+ color={IconColors.BrandPrimary}
66
92
  name={IconNames.Check}
67
93
  size={IconSizes.Large}
68
- color={IconColors.BrandPrimary}
69
- className="custom-icon"
70
94
  />
71
95
  }
72
- notificationHeading="Notification Heading"
96
+ id="notificationID"
73
97
  notificationContent={<>Notification content.</>}
98
+ notificationHeading="Notification Heading"
74
99
  />
75
100
  );
76
101
  expect(utils.container.querySelector(".custom-icon")).toBeInTheDocument();
@@ -80,9 +105,9 @@ describe("Notification", () => {
80
105
  utils.rerender(
81
106
  <Notification
82
107
  id="notificationID"
83
- notificationType={NotificationTypes.Announcement}
84
- notificationHeading="Notification Heading"
85
108
  notificationContent={<>Notification content.</>}
109
+ notificationHeading="Notification Heading"
110
+ notificationType={NotificationTypes.Announcement}
86
111
  />
87
112
  );
88
113
 
@@ -96,9 +121,9 @@ describe("Notification", () => {
96
121
  utils.rerender(
97
122
  <Notification
98
123
  id="notificationID"
99
- notificationType={NotificationTypes.Warning}
100
- notificationHeading="Notification Heading"
101
124
  notificationContent={<>Notification content.</>}
125
+ notificationHeading="Notification Heading"
126
+ notificationType={NotificationTypes.Warning}
102
127
  />
103
128
  );
104
129
 
@@ -113,8 +138,8 @@ describe("Notification", () => {
113
138
  .create(
114
139
  <Notification
115
140
  id="notificationID1"
116
- notificationHeading="Notification Heading"
117
141
  notificationContent={<>Notification content.</>}
142
+ notificationHeading="Notification Heading"
118
143
  />
119
144
  )
120
145
  .toJSON();
@@ -122,9 +147,9 @@ describe("Notification", () => {
122
147
  .create(
123
148
  <Notification
124
149
  id="notificationID2"
125
- notificationType={NotificationTypes.Announcement}
126
- notificationHeading="Notification Heading"
127
150
  notificationContent={<>Notification content.</>}
151
+ notificationHeading="Notification Heading"
152
+ notificationType={NotificationTypes.Announcement}
128
153
  />
129
154
  )
130
155
  .toJSON();
@@ -132,9 +157,9 @@ describe("Notification", () => {
132
157
  .create(
133
158
  <Notification
134
159
  id="notificationID3"
135
- notificationType={NotificationTypes.Warning}
136
- notificationHeading="Notification Heading"
137
160
  notificationContent={<>Notification content.</>}
161
+ notificationHeading="Notification Heading"
162
+ notificationType={NotificationTypes.Warning}
138
163
  />
139
164
  )
140
165
  .toJSON();
@@ -146,9 +171,30 @@ describe("Notification", () => {
146
171
  />
147
172
  )
148
173
  .toJSON();
174
+ const withoutAnIcon = renderer
175
+ .create(
176
+ <Notification
177
+ id="notificationID5"
178
+ notificationHeading="Notification Heading"
179
+ notificationContent={<>Notification content.</>}
180
+ showIcon={false}
181
+ />
182
+ )
183
+ .toJSON();
184
+ const withoutHeadingAndIcon = renderer
185
+ .create(
186
+ <Notification
187
+ id="notificationID6"
188
+ notificationContent={<>Notification content.</>}
189
+ showIcon={false}
190
+ />
191
+ )
192
+ .toJSON();
149
193
  expect(standard).toMatchSnapshot();
150
194
  expect(announcement).toMatchSnapshot();
151
195
  expect(warning).toMatchSnapshot();
152
196
  expect(withoutHeading).toMatchSnapshot();
197
+ expect(withoutAnIcon).toMatchSnapshot();
198
+ expect(withoutHeadingAndIcon).toMatchSnapshot();
153
199
  });
154
200
  });
@@ -17,6 +17,8 @@ interface BaseProps {
17
17
  centered?: boolean;
18
18
  /** Optional custom `Icon` that will override the default `Icon`. */
19
19
  icon?: JSX.Element;
20
+ /** ID that other components can cross reference for accessibility purposes. */
21
+ id?: string;
20
22
  /** Optional prop to control the coloring of the `Notification` text and the
21
23
  * visibility of an applicable icon. */
22
24
  notificationType?: NotificationTypes;
@@ -35,14 +37,14 @@ export interface NotificationProps extends BasePropsWithoutAlignText {
35
37
  dismissible?: boolean;
36
38
  /** Optional custom `Icon` that will override the default `Icon`. */
37
39
  icon?: JSX.Element;
38
- /** ID that other components can cross reference for accessibility purposes. */
39
- id?: string;
40
40
  /** Optional prop to control the margin around the `Notification` component. */
41
41
  noMargin?: boolean;
42
42
  /** Content to be rendered in a `NotificationContent` component. */
43
43
  notificationContent: string | JSX.Element;
44
44
  /** Content to be rendered in a `NotificationHeading` component. */
45
45
  notificationHeading?: string;
46
+ /** Prop to display the `Notification` icon. Defaults to `true`. */
47
+ showIcon?: boolean;
46
48
  }
47
49
 
48
50
  /**
@@ -51,15 +53,20 @@ export interface NotificationProps extends BasePropsWithoutAlignText {
51
53
  export function NotificationHeading(
52
54
  props: React.PropsWithChildren<BasePropsWithoutAlignText>
53
55
  ) {
54
- const { centered, children, icon, notificationType } = props;
56
+ const { centered, children, icon, id, notificationType } = props;
55
57
  const styles = useMultiStyleConfig("NotificationHeading", {
56
58
  centered,
59
+ icon,
57
60
  notificationType,
58
61
  });
59
62
  return (
60
63
  <Box as="header" __css={styles}>
61
64
  {icon}
62
- <Heading level={HeadingLevels.Four} additionalStyles={styles.heading}>
65
+ <Heading
66
+ additionalStyles={styles.heading}
67
+ id={`${id}-heading`}
68
+ level={HeadingLevels.Four}
69
+ >
63
70
  {children}
64
71
  </Heading>
65
72
  </Box>
@@ -75,6 +82,7 @@ export function NotificationContent(
75
82
  const { alignText, children, icon, notificationType } = props;
76
83
  const styles = useMultiStyleConfig("NotificationContent", {
77
84
  alignText,
85
+ icon,
78
86
  notificationType,
79
87
  });
80
88
  return (
@@ -100,6 +108,7 @@ export default function Notification(props: NotificationProps) {
100
108
  notificationContent,
101
109
  notificationHeading,
102
110
  notificationType = NotificationTypes.Standard,
111
+ showIcon = true,
103
112
  } = props;
104
113
  const [isOpen, setIsOpen] = useState(true);
105
114
  const handleClose = () => setIsOpen(false);
@@ -107,6 +116,7 @@ export default function Notification(props: NotificationProps) {
107
116
  centered,
108
117
  noMargin,
109
118
  notificationType,
119
+ showIcon,
110
120
  });
111
121
  const iconElement = () => {
112
122
  const baseIconProps = {
@@ -114,6 +124,10 @@ export default function Notification(props: NotificationProps) {
114
124
  size: IconSizes.Large,
115
125
  additionalStyles: styles.icon,
116
126
  };
127
+ // If the icon should not display, return null.
128
+ if (!showIcon) {
129
+ return null;
130
+ }
117
131
  // If a custom icon is passed, add specific `Notification` styles.
118
132
  if (icon)
119
133
  return React.cloneElement(icon, {
@@ -125,18 +139,22 @@ export default function Notification(props: NotificationProps) {
125
139
  name: IconNames.SpeakerNotes,
126
140
  color: IconColors.SectionResearchSecondary,
127
141
  },
142
+ [NotificationTypes.Standard]: {
143
+ name: IconNames.AlertNotificationImportant,
144
+ color: IconColors.UiBlack,
145
+ },
128
146
  [NotificationTypes.Warning]: {
129
147
  name: IconNames.ErrorFilled,
130
148
  color: IconColors.BrandPrimary,
131
149
  },
132
150
  };
133
- return notificationType !== NotificationTypes.Standard ? (
151
+ return (
134
152
  <Icon
135
153
  id={`${id}-notification-icon`}
136
154
  {...baseIconProps}
137
155
  {...iconProps[notificationType]}
138
156
  />
139
- ) : null;
157
+ );
140
158
  };
141
159
  const dismissibleButton = dismissible && (
142
160
  <Button
@@ -157,15 +175,14 @@ export default function Notification(props: NotificationProps) {
157
175
  <NotificationHeading
158
176
  centered={centered}
159
177
  icon={iconElem}
178
+ id={id}
160
179
  notificationType={notificationType}
161
180
  >
162
181
  {notificationHeading}
163
182
  </NotificationHeading>
164
183
  );
165
184
  // Specific alignment styles for the content.
166
- const alignText =
167
- childHeading &&
168
- (!!icon || (notificationType !== NotificationTypes.Standard && !centered));
185
+ const alignText = childHeading && showIcon && (!!icon || !centered);
169
186
  const childContent = (
170
187
  <NotificationContent
171
188
  alignText={alignText}
@@ -12,8 +12,41 @@ exports[`Notification renders the UI snapshot correctly 1`] = `
12
12
  <header
13
13
  className="css-0"
14
14
  >
15
+ <svg
16
+ aria-hidden={false}
17
+ className="chakra-icon css-onkibi"
18
+ focusable={false}
19
+ id="notificationID1-notification-icon"
20
+ role="img"
21
+ title="alert_notification_important icon"
22
+ viewBox="0 0 24 24"
23
+ >
24
+ <g
25
+ stroke="currentColor"
26
+ strokeWidth="1.5"
27
+ >
28
+ <path
29
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
30
+ fill="none"
31
+ strokeLinecap="round"
32
+ />
33
+ <path
34
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
35
+ fill="currentColor"
36
+ strokeLinecap="round"
37
+ />
38
+ <circle
39
+ cx="12"
40
+ cy="12"
41
+ fill="none"
42
+ r="11.25"
43
+ strokeMiterlimit="10"
44
+ />
45
+ </g>
46
+ </svg>
15
47
  <h4
16
48
  className="chakra-heading css-0"
49
+ id="notificationID1-heading"
17
50
  >
18
51
  Notification Heading
19
52
  </h4>
@@ -77,6 +110,7 @@ exports[`Notification renders the UI snapshot correctly 2`] = `
77
110
  </svg>
78
111
  <h4
79
112
  className="chakra-heading css-0"
113
+ id="notificationID2-heading"
80
114
  >
81
115
  Notification Heading
82
116
  </h4>
@@ -140,6 +174,7 @@ exports[`Notification renders the UI snapshot correctly 3`] = `
140
174
  </svg>
141
175
  <h4
142
176
  className="chakra-heading css-0"
177
+ id="notificationID3-heading"
143
178
  >
144
179
  Notification Heading
145
180
  </h4>
@@ -162,6 +197,92 @@ exports[`Notification renders the UI snapshot correctly 4`] = `
162
197
  className="css-0"
163
198
  data-type="standard"
164
199
  id="notificationID4"
200
+ >
201
+ <div
202
+ className="css-0"
203
+ >
204
+ <div
205
+ className="css-0"
206
+ >
207
+ <svg
208
+ aria-hidden={false}
209
+ className="chakra-icon css-onkibi"
210
+ focusable={false}
211
+ id="notificationID4-notification-icon"
212
+ role="img"
213
+ title="alert_notification_important icon"
214
+ viewBox="0 0 24 24"
215
+ >
216
+ <g
217
+ stroke="currentColor"
218
+ strokeWidth="1.5"
219
+ >
220
+ <path
221
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
222
+ fill="none"
223
+ strokeLinecap="round"
224
+ />
225
+ <path
226
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
227
+ fill="currentColor"
228
+ strokeLinecap="round"
229
+ />
230
+ <circle
231
+ cx="12"
232
+ cy="12"
233
+ fill="none"
234
+ r="11.25"
235
+ strokeMiterlimit="10"
236
+ />
237
+ </g>
238
+ </svg>
239
+ <div
240
+ className="css-0"
241
+ >
242
+ Notification content.
243
+ </div>
244
+ </div>
245
+ </div>
246
+ </aside>
247
+ `;
248
+
249
+ exports[`Notification renders the UI snapshot correctly 5`] = `
250
+ <aside
251
+ className="css-0"
252
+ data-type="standard"
253
+ id="notificationID5"
254
+ >
255
+ <div
256
+ className="css-0"
257
+ >
258
+ <header
259
+ className="css-0"
260
+ >
261
+ <h4
262
+ className="chakra-heading css-0"
263
+ id="notificationID5-heading"
264
+ >
265
+ Notification Heading
266
+ </h4>
267
+ </header>
268
+ <div
269
+ className="css-0"
270
+ >
271
+ <div
272
+ className="css-0"
273
+ >
274
+ Notification content.
275
+ </div>
276
+ </div>
277
+ </div>
278
+ </aside>
279
+ `;
280
+
281
+ exports[`Notification renders the UI snapshot correctly 6`] = `
282
+ <aside
283
+ className="css-0"
284
+ data-type="standard"
285
+ id="notificationID6"
165
286
  >
166
287
  <div
167
288
  className="css-0"
@@ -1,12 +1,13 @@
1
1
  import {
2
- Meta,
3
- Story,
4
2
  ArgsTable,
5
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
  import { withQuery } from "@storybook/addon-queryparams";
10
+
10
11
  import Pagination from "./Pagination";
11
12
  import * as stories from "./Pagination.stories.tsx";
12
13
  import { getCategory } from "../../utils/componentCategories";
@@ -18,15 +19,16 @@ import { getCategory } from "../../utils/componentCategories";
18
19
  parameters={{
19
20
  design: {
20
21
  type: "figma",
21
- url:
22
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17226%3A932",
22
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17226%3A932",
23
23
  },
24
24
  jest: ["Pagination.test.tsx"],
25
25
  }}
26
26
  argTypes={{
27
- id: { table: { disable: true } },
28
- getPageHref: { table: { disable: true } },
29
- onPageChange: { table: { disable: true } },
27
+ className: { control: false },
28
+ getPageHref: { control: false },
29
+ id: { control: false },
30
+ initialPage: { table: { defaultValue: { summary: 1 } } },
31
+ onPageChange: { control: false },
30
32
  }}
31
33
  />
32
34
 
@@ -35,7 +37,7 @@ import { getCategory } from "../../utils/componentCategories";
35
37
  | Component Version | DS Version |
36
38
  | ----------------- | ---------- |
37
39
  | Added | `0.0.10` |
38
- | Latest | `0.25.3` |
40
+ | Latest | `0.25.10` |
39
41
 
40
42
  <Description of={Pagination} />
41
43
 
@@ -70,7 +72,11 @@ const getPageHref = (selectedPage: number) => {
70
72
  <Story
71
73
  name="Pagination with URL Updates"
72
74
  args={{
75
+ className: undefined,
76
+ getPageHref: undefined,
77
+ id: "pagination-id",
73
78
  initialPage: 1,
79
+ onPageChange: undefined,
74
80
  pageCount: 10,
75
81
  }}
76
82
  >
@@ -103,7 +109,11 @@ const onPageChange = (currentPage: number) => {
103
109
  <Story
104
110
  name="Pagination with Unchanging URL"
105
111
  args={{
112
+ className: undefined,
113
+ getPageHref: undefined,
114
+ id: "pagination-id-2",
106
115
  initialPage: 7,
116
+ onPageChange: undefined,
107
117
  pageCount: 100,
108
118
  }}
109
119
  >
@@ -31,10 +31,10 @@ export interface PaginationProps {
31
31
  const Pagination: React.FC<PaginationProps> = (props: PaginationProps) => {
32
32
  const {
33
33
  className,
34
- initialPage = 1,
35
34
  getPageHref,
36
35
  id = generateUUID(),
37
- onPageChange = () => {},
36
+ initialPage = 1,
37
+ onPageChange,
38
38
  pageCount,
39
39
  } = props;
40
40
  const [currentPage, setCurrentPage] = useState<number>(initialPage);
@@ -63,7 +63,7 @@ const Pagination: React.FC<PaginationProps> = (props: PaginationProps) => {
63
63
  e.preventDefault && e.preventDefault();
64
64
  if (currentPage === selectedPage) return;
65
65
  setCurrentPage(selectedPage);
66
- onPageChange(selectedPage);
66
+ onPageChange && onPageChange(selectedPage);
67
67
  };
68
68
  // Select the previous page.
69
69
  const previousPage = (e: Event) => {