qpp-style 0.0.9 → 0.0.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 (456) hide show
  1. package/.eslintrc.js +28 -28
  2. package/.husky/pre-commit +5 -0
  3. package/README.md +45 -0
  4. package/components/Accordion/index.jsx +35 -43
  5. package/components/Alert/index.js +53 -0
  6. package/components/Breadcrumb/index.js +4 -4
  7. package/components/Button/index.js +17 -6
  8. package/components/CalloutBox/index.js +109 -0
  9. package/components/Card/index.js +137 -0
  10. package/components/Details/DetailsIcons.js +50 -0
  11. package/components/Details/index.js +53 -0
  12. package/components/Dropdown/index.js +85 -0
  13. package/components/DropdownButton/Menu.js +25 -0
  14. package/components/DropdownButton/MenuButton.js +41 -0
  15. package/components/DropdownButton/MenuItem.js +25 -0
  16. package/components/DropdownButton/MenuItemLink.js +27 -0
  17. package/components/Error/Collapsible.jsx +2 -2
  18. package/components/Footer/FooterUI.jsx +175 -177
  19. package/components/Footer/footer.js +2 -12
  20. package/components/GovBanner/index.js +117 -0
  21. package/components/Header/HeaderAccountMenu.jsx +49 -75
  22. package/components/Header/HeaderContainer.jsx +46 -34
  23. package/components/Header/HeaderLogo.jsx +40 -17
  24. package/components/Header/HeaderMenuButton.js +38 -12
  25. package/components/Header/HeaderMenuItem.jsx +204 -64
  26. package/components/Header/HeaderMenuLink.js +46 -10
  27. package/components/Header/HeaderMenuSignOutButton.js +46 -10
  28. package/components/Header/HeaderMobileButton.js +15 -6
  29. package/components/Header/HeaderUI.jsx +118 -117
  30. package/components/Header/HelpIcon.jsx +7 -5
  31. package/components/Header/ImpersonatorBanner.jsx +81 -0
  32. package/components/Header/header.js +2 -0
  33. package/components/Header/hooks.js +53 -1
  34. package/components/Header/utag-helpers.js +9 -0
  35. package/components/Infotip/Infotip.jsx +6 -10
  36. package/components/Infotip/InfotipContent.jsx +46 -0
  37. package/components/Infotip/InfotipIcon.jsx +3 -3
  38. package/components/Link/index.js +61 -0
  39. package/components/Modal/Modal.jsx +53 -40
  40. package/components/Modal/index.jsx +11 -11
  41. package/components/NotificationBanner/CollapsedView.js +39 -0
  42. package/components/NotificationBanner/ExpandedView.js +45 -0
  43. package/components/NotificationBanner/index.js +219 -30
  44. package/components/Search/index.js +98 -0
  45. package/components/SessionDialog/sessionDialog.js +26 -0
  46. package/components/SessionDialogUI.jsx +34 -26
  47. package/components/SideNav/AnimationGroup/AnimationGroup.jsx +9 -2
  48. package/components/SideNav/Chart/ScoreChart.jsx +1 -1
  49. package/components/SideNav/Chart/__tests__/ScoreChart.test.js +3 -12
  50. package/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +144 -35
  51. package/components/SideNav/Chart/index.js +1 -1
  52. package/components/SideNav/Content/LevelOneContent.jsx +145 -255
  53. package/components/SideNav/Content/LevelTwoContent.jsx +12 -10
  54. package/components/SideNav/Content/SelectRole/index.js +77 -0
  55. package/components/SideNav/Content/SelectRole/utils.js +140 -0
  56. package/components/SideNav/Details/PracticeDetails.jsx +4 -0
  57. package/components/SideNav/Links/CmsSwitchLink.jsx +1 -1
  58. package/components/SideNav/Links/NavLinkContainer.jsx +29 -34
  59. package/components/SideNav/Links/NavLinkDrawer.jsx +100 -17
  60. package/components/SideNav/Links/NavLinkInline.jsx +7 -2
  61. package/components/SideNav/SideNav.md +28 -27
  62. package/components/SideNav/UI/SideNavUI.jsx +122 -129
  63. package/components/SideNav/UI/default-content.json +117 -0
  64. package/components/SideNav/helpers.js +316 -4
  65. package/components/Tabs/TabPanel.js +5 -0
  66. package/components/Tabs/Tabs.js +73 -0
  67. package/components/TextInput/index.js +137 -0
  68. package/components/hooks/useGetConfig.js +75 -0
  69. package/components/index.js +103 -9
  70. package/coverage/clover.xml +1465 -41
  71. package/coverage/coverage-final.json +72 -1
  72. package/coverage/lcov-report/block-navigation.js +8 -0
  73. package/coverage/lcov-report/components/Accordion/index.html +26 -21
  74. package/coverage/lcov-report/components/Accordion/index.jsx.html +106 -131
  75. package/coverage/lcov-report/{SideNav/Chart → components/Button}/index.html +29 -24
  76. package/coverage/lcov-report/{Error/Collapsible.jsx.html → components/Button/index.js.html} +125 -114
  77. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +92 -87
  78. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +32 -33
  79. package/coverage/lcov-report/components/Error/index.html +11 -6
  80. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +200 -189
  81. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +24 -61
  82. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +18 -13
  83. package/coverage/lcov-report/components/Footer/index.html +35 -45
  84. package/coverage/lcov-report/components/{InfoModal → GovBanner}/index.html +27 -22
  85. package/coverage/lcov-report/components/{InfoModal/index.jsx.html → GovBanner/index.js.html} +157 -122
  86. package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +93 -520
  87. package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +19 -23
  88. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
  89. package/coverage/lcov-report/components/{SideNav/Links/NavLinkContainer.jsx.html → Header/HeaderLogo.jsx.html} +78 -67
  90. package/coverage/lcov-report/components/{SideNav/Links/NavItemInline.jsx.html → Header/HeaderMenuButton.js.html} +71 -78
  91. package/coverage/lcov-report/components/{SideNav/Links/NavLinkDrawer.jsx.html → Header/HeaderMenuItem.jsx.html} +291 -268
  92. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  93. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  94. package/coverage/lcov-report/components/{SideNav/Links/NavLinkToggle.jsx.html → Header/HeaderMobileButton.js.html} +64 -47
  95. package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +176 -756
  96. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  97. package/coverage/lcov-report/{Accordion/index.jsx.html → components/Header/ImpersonatorBanner.jsx.html} +109 -167
  98. package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +24 -19
  99. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  100. package/coverage/lcov-report/components/Header/index.html +203 -33
  101. package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +35 -42
  102. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +53 -48
  103. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +37 -32
  104. package/coverage/lcov-report/components/Infotip/index.html +8 -3
  105. package/coverage/lcov-report/components/Infotip/index.js.html +8 -3
  106. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
  107. package/coverage/lcov-report/{HeaderUI.jsx.html → components/Modal/Modal.jsx.html} +169 -257
  108. package/coverage/lcov-report/components/Modal/index.html +146 -0
  109. package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Modal/index.jsx.html} +50 -42
  110. package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +202 -0
  111. package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +220 -0
  112. package/coverage/lcov-report/components/NotificationBanner/index.html +58 -23
  113. package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → NotificationBanner/index.js.html} +292 -272
  114. package/coverage/lcov-report/components/SanitizedContent/index.html +8 -3
  115. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +475 -50
  116. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +248 -255
  117. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +272 -408
  118. package/coverage/lcov-report/components/SideNav/Chart/index.html +28 -38
  119. package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +116 -0
  120. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  121. package/coverage/lcov-report/components/SideNav/helpers.js.html +987 -46
  122. package/coverage/lcov-report/components/SideNav/index.html +24 -19
  123. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +70 -65
  124. package/coverage/lcov-report/components/Tooltip/index.html +8 -3
  125. package/coverage/lcov-report/components/Tooltip/index.js.html +8 -3
  126. package/coverage/lcov-report/components/Tooltip/position.js.html +57 -64
  127. package/coverage/lcov-report/components/hooks/index.html +116 -0
  128. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +310 -0
  129. package/coverage/lcov-report/components/index.html +10 -5
  130. package/coverage/lcov-report/index.html +401 -21
  131. package/coverage/lcov-report/{Error/ErrorUI.jsx.html → lib/Chevron.jsx.html} +44 -42
  132. package/coverage/lcov-report/lib/SvgComponents.jsx.html +1840 -0
  133. package/coverage/lcov-report/lib/index.html +34 -14
  134. package/coverage/lcov-report/react/components/Accordion/index.html +26 -21
  135. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +67 -86
  136. package/coverage/lcov-report/react/components/{FlashNotification → Button}/index.html +23 -33
  137. package/coverage/lcov-report/{components/SideNav/Links/NavLinkInline.jsx.html → react/components/Button/index.js.html} +119 -120
  138. package/coverage/lcov-report/react/components/{Tabs → Dropdown}/index.html +23 -33
  139. package/coverage/lcov-report/react/components/{InfoModal/index.jsx.html → Dropdown/index.js.html} +102 -154
  140. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +26 -21
  141. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +11 -6
  142. package/coverage/lcov-report/react/components/Error/error.js.html +8 -3
  143. package/coverage/lcov-report/react/components/Error/index.html +11 -6
  144. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +196 -194
  145. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +9 -4
  146. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +18 -13
  147. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +18 -13
  148. package/coverage/lcov-report/react/components/Footer/footer.js.html +12 -37
  149. package/coverage/lcov-report/react/components/Footer/index.html +35 -45
  150. package/coverage/lcov-report/react/components/{InfoModal → GovBanner}/index.html +27 -22
  151. package/coverage/lcov-report/react/components/{Tabs/TabsUI.jsx.html → GovBanner/index.js.html} +146 -153
  152. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +81 -154
  153. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +15 -10
  154. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +91 -50
  155. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +105 -31
  156. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +109 -26
  157. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +510 -85
  158. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +137 -24
  159. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +134 -21
  160. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +56 -24
  161. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +172 -179
  162. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +30 -19
  163. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +331 -0
  164. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +9 -4
  165. package/coverage/lcov-report/react/components/Header/header.js.html +15 -4
  166. package/coverage/lcov-report/react/components/Header/hooks.js.html +187 -26
  167. package/coverage/lcov-report/react/components/Header/index.html +157 -122
  168. package/coverage/lcov-report/react/components/{Spinner/index.js.html → Header/utag-helpers.js.html} +26 -21
  169. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +12 -7
  170. package/coverage/lcov-report/react/components/{Tabs/tabs.js.html → Infotip/InfotipContent.jsx.html} +83 -48
  171. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +12 -7
  172. package/coverage/lcov-report/react/components/Infotip/index.html +8 -3
  173. package/coverage/lcov-report/react/components/Infotip/index.js.html +8 -3
  174. package/coverage/lcov-report/react/components/{FlashNotification/FlashNotificationUI.jsx.html → Modal/LegacyModal.jsx.html} +89 -84
  175. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +505 -0
  176. package/coverage/lcov-report/react/components/Modal/index.html +52 -17
  177. package/coverage/lcov-report/react/components/Modal/index.jsx.html +38 -201
  178. package/coverage/lcov-report/{components/SideNav/Links/CmsSwitchLink.jsx.html → react/components/NotificationBanner/CollapsedView.js.html} +52 -50
  179. package/coverage/lcov-report/{components/SideNav/Details/PracticeDetails.jsx.html → react/components/NotificationBanner/ExpandedView.js.html} +74 -57
  180. package/coverage/lcov-report/react/components/NotificationBanner/index.html +56 -21
  181. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +615 -43
  182. package/coverage/lcov-report/react/components/SanitizedContent/index.html +8 -3
  183. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +12 -7
  184. package/coverage/lcov-report/react/components/{Spinner → SessionDialog}/index.html +11 -6
  185. package/coverage/lcov-report/react/components/{FlashNotification/index.js.html → SessionDialog/sessionDialog.js.html} +35 -42
  186. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +80 -51
  187. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +38 -12
  188. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +18 -13
  189. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +67 -56
  190. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +26 -21
  191. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +9 -4
  192. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +189 -514
  193. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +28 -17
  194. package/coverage/lcov-report/{components/SideNav/Details → react/components/SideNav/Content/SelectRole}/index.html +42 -52
  195. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +316 -0
  196. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  197. package/coverage/lcov-report/react/components/SideNav/Content/index.html +32 -27
  198. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +8 -3
  199. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +10 -5
  200. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +26 -9
  201. package/coverage/lcov-report/react/components/SideNav/Details/index.html +23 -18
  202. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +8 -3
  203. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +9 -4
  204. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +8 -3
  205. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +54 -64
  206. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +281 -27
  207. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +66 -46
  208. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +8 -3
  209. package/coverage/lcov-report/react/components/SideNav/Links/index.html +44 -39
  210. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +8 -3
  211. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +165 -181
  212. package/coverage/lcov-report/react/components/SideNav/UI/index.html +28 -23
  213. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +8 -3
  214. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +967 -26
  215. package/coverage/lcov-report/react/components/SideNav/index.html +27 -22
  216. package/coverage/lcov-report/react/components/SideNav/index.js.html +8 -3
  217. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +20 -15
  218. package/coverage/lcov-report/react/components/Tooltip/index.html +8 -3
  219. package/coverage/lcov-report/react/components/Tooltip/index.js.html +8 -3
  220. package/coverage/lcov-report/react/components/Tooltip/position.js.html +22 -17
  221. package/coverage/lcov-report/{components/SideNav/AnimationGroup → react/components/hooks}/index.html +29 -24
  222. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +310 -0
  223. package/coverage/lcov-report/react/components/index.html +10 -5
  224. package/coverage/lcov-report/react/index.html +20 -15
  225. package/coverage/lcov-report/react/index.js.html +29 -9
  226. package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
  227. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +221 -132
  228. package/coverage/lcov-report/react/lib/index.html +32 -27
  229. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +8 -3
  230. package/coverage/lcov-report/react/session/index.html +32 -27
  231. package/coverage/lcov-report/react/session/index.js.html +8 -3
  232. package/coverage/lcov-report/react/session/logout.js.html +122 -18
  233. package/coverage/lcov-report/react/session/refresh.js.html +12 -7
  234. package/coverage/lcov-report/react/session/ttl.js.html +9 -4
  235. package/coverage/lcov-report/session/index.html +50 -45
  236. package/coverage/lcov-report/session/index.js.html +8 -3
  237. package/coverage/lcov-report/session/logout.js.html +144 -49
  238. package/coverage/lcov-report/session/refresh.js.html +41 -36
  239. package/coverage/lcov-report/session/ttl.js.html +34 -29
  240. package/coverage/lcov-report/sorter.js +26 -0
  241. package/coverage/lcov.info +3189 -46
  242. package/dist/browser.js +1 -1
  243. package/dist/browser.js.LICENSE.txt +1 -7
  244. package/dist/browser.js.map +1 -1
  245. package/dist/index.js +1 -1
  246. package/dist/index.js.LICENSE.txt +1 -7
  247. package/dist/index.js.map +1 -1
  248. package/dist/react/index.js +1 -1
  249. package/dist/react/index.js.LICENSE.txt +16 -16
  250. package/dist/react/index.js.map +1 -1
  251. package/fonts/PublicSans-Black.ttf +0 -0
  252. package/fonts/PublicSans-BlackItalic.ttf +0 -0
  253. package/fonts/PublicSans-Bold.ttf +0 -0
  254. package/fonts/PublicSans-BoldItalic.ttf +0 -0
  255. package/fonts/PublicSans-ExtraBold.ttf +0 -0
  256. package/fonts/PublicSans-ExtraBoldItalic.ttf +0 -0
  257. package/fonts/PublicSans-ExtraLight.ttf +0 -0
  258. package/fonts/PublicSans-ExtraLightItalic.ttf +0 -0
  259. package/fonts/PublicSans-Italic.ttf +0 -0
  260. package/fonts/PublicSans-Light.ttf +0 -0
  261. package/fonts/PublicSans-LightItalic.ttf +0 -0
  262. package/fonts/PublicSans-Medium.ttf +0 -0
  263. package/fonts/PublicSans-MediumItalic.ttf +0 -0
  264. package/fonts/PublicSans-Regular.ttf +0 -0
  265. package/fonts/PublicSans-SemiBold.ttf +0 -0
  266. package/fonts/PublicSans-SemiBoldItalic.ttf +0 -0
  267. package/fonts/PublicSans-Thin.ttf +0 -0
  268. package/fonts/PublicSans-ThinItalic.ttf +0 -0
  269. package/images/icon-dot-gov.svg +1 -0
  270. package/images/icon-https.svg +1 -0
  271. package/images/icons/close-x.svg +6 -0
  272. package/images/icons/svg/arrow-down.svg +3 -0
  273. package/images/icons/svg/arrow-download.svg +1 -0
  274. package/images/icons/svg/arrow-right.svg +1 -0
  275. package/images/icons/svg/arrow-up.svg +3 -0
  276. package/images/icons/svg/block.svg +5 -0
  277. package/images/icons/svg/calendar.svg +1 -0
  278. package/images/icons/svg/check-circle.svg +5 -0
  279. package/images/icons/svg/checkmark.svg +7 -0
  280. package/images/icons/svg/chevron-down.svg +11 -0
  281. package/images/icons/svg/chevron-left.svg +12 -0
  282. package/images/icons/svg/chevron-right.svg +12 -0
  283. package/images/icons/svg/chevron-up.svg +12 -0
  284. package/images/icons/svg/clipboard.svg +1 -0
  285. package/images/icons/svg/close.svg +1 -0
  286. package/images/icons/svg/divide.svg +13 -0
  287. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  288. package/images/icons/svg/download.svg +1 -0
  289. package/images/icons/svg/dropdown-arrow.svg +1 -0
  290. package/images/icons/svg/equals.svg +13 -0
  291. package/images/icons/svg/exclamation.svg +11 -0
  292. package/images/icons/svg/external.svg +1 -0
  293. package/images/icons/svg/file-download.svg +1 -0
  294. package/images/icons/svg/file-upload.svg +1 -0
  295. package/images/icons/svg/info.svg +20 -0
  296. package/images/icons/svg/manage-user-access.svg +8 -0
  297. package/images/icons/svg/multiply.svg +12 -0
  298. package/images/icons/svg/performance-feedback.svg +1 -0
  299. package/images/icons/svg/plus.svg +12 -0
  300. package/images/icons/svg/preview.svg +17 -0
  301. package/images/icons/svg/print.svg +1 -0
  302. package/images/icons/svg/registration.svg +8 -0
  303. package/images/icons/svg/reporting.svg +17 -0
  304. package/images/icons/svg/save-disk.svg +5 -0
  305. package/images/icons/svg/search.svg +1 -0
  306. package/images/icons/svg/subtract.svg +15 -0
  307. package/images/icons/svg/targeted-review.svg +15 -0
  308. package/images/icons/svg/tooltip-question.svg +1 -0
  309. package/images/icons/svg/trash.svg +1 -0
  310. package/images/icons/svg/upload.svg +1 -0
  311. package/images/us_flag_small.png +0 -0
  312. package/index.js +5 -0
  313. package/jest.config.js +139 -132
  314. package/lib/Chevron.jsx +32 -0
  315. package/lib/SvgComponents.jsx +197 -49
  316. package/package.json +60 -78
  317. package/session/logout.js +35 -2
  318. package/styles/_global.scss +63 -62
  319. package/styles/_main.scss +6 -0
  320. package/styles/_qpp-style.scss +0 -3
  321. package/styles/components/_accordion.scss +249 -246
  322. package/styles/components/_autocomplete.scss +0 -3
  323. package/styles/components/_spinner.scss +0 -2
  324. package/styles/components/_tables.scss +77 -67
  325. package/styles/components/_text.scss +102 -102
  326. package/styles/components/_variables.scss +12 -12
  327. package/styles/qppds/base/_backgrounds.scss +1 -6
  328. package/styles/qppds/base/_fonts.scss +24 -0
  329. package/styles/qppds/base/_icon.scss +31 -0
  330. package/styles/qppds/base/_layout.scss +5 -0
  331. package/styles/qppds/base/_typography.scss +77 -43
  332. package/styles/qppds/base/index.scss +3 -6
  333. package/styles/qppds/components/_alert.scss +101 -0
  334. package/styles/qppds/components/_breadcrumbs.scss +42 -10
  335. package/styles/qppds/components/_button.scss +38 -12
  336. package/styles/qppds/components/_card.scss +175 -0
  337. package/styles/qppds/components/_checkbox.scss +199 -0
  338. package/styles/qppds/components/_circular-loader.scss +47 -0
  339. package/styles/qppds/components/_details.scss +90 -0
  340. package/styles/qppds/components/_dropdown-menu.scss +125 -0
  341. package/styles/qppds/components/_dropdown.scss +5 -0
  342. package/styles/qppds/components/_footer.scss +606 -0
  343. package/styles/qppds/components/_gov-banner.scss +344 -0
  344. package/styles/{components → qppds/components}/_header.scss +460 -24
  345. package/styles/qppds/components/_link.scss +32 -9
  346. package/styles/qppds/components/_modal.scss +61 -21
  347. package/styles/qppds/components/_page-header.scss +65 -2
  348. package/styles/qppds/components/_pagination.scss +227 -0
  349. package/styles/qppds/components/_process-list.scss +104 -0
  350. package/styles/qppds/components/_radio-button.scss +184 -0
  351. package/styles/qppds/components/_search.scss +118 -0
  352. package/styles/{components → qppds/components}/_sidebar.scss +2 -0
  353. package/styles/qppds/components/_step-indicator.scss +190 -0
  354. package/styles/qppds/components/_table.scss +157 -0
  355. package/styles/qppds/components/_tabs.scss +197 -0
  356. package/styles/qppds/components/_text-input.scss +60 -0
  357. package/styles/qppds/components/index.scss +18 -0
  358. package/styles/{components → qppds/components}/sidebar/_links.scss +48 -1
  359. package/styles/qppds/components/sidebar/_select-role-dropdown.scss +21 -0
  360. package/styles/{components → qppds/components}/sidebar/_sidebar-animation.scss +4 -0
  361. package/styles/qppds/components/sidebar/_sidebar.scss +146 -0
  362. package/styles/qppds/settings/_functions.scss +3 -1
  363. package/styles/qppds/settings/mixins/_borders.scss +6 -0
  364. package/styles/qppds/settings/mixins/_focus.scss +7 -1
  365. package/styles/qppds/settings/mixins/_icons.scss +39 -4
  366. package/styles/qppds/settings/mixins/_index.scss +3 -0
  367. package/styles/qppds/settings/mixins/_layout.scss +46 -7
  368. package/styles/qppds/settings/mixins/_table.scss +91 -0
  369. package/styles/qppds/settings/mixins/_type.scss +89 -0
  370. package/styles/qppds/settings/variables/_color.scss +47 -1
  371. package/styles/qppds/settings/variables/_index.scss +2 -1
  372. package/styles/qppds/settings/variables/_layout.scss +34 -9
  373. package/styles/qppds/settings/variables/_type.scss +41 -0
  374. package/styles/qppds/settings/variables/_z-index.scss +8 -0
  375. package/styles/qppds/utilities/_background-color.scss +4 -0
  376. package/styles/qppds/utilities/_color.scss +24 -0
  377. package/styles/qppds/utilities/{_display-visability.scss → _display-visibility.scss} +8 -0
  378. package/styles/qppds/utilities/_flexbox.scss +113 -0
  379. package/styles/qppds/utilities/_font-family.scss +4 -0
  380. package/styles/qppds/utilities/_gap.scss +38 -0
  381. package/styles/qppds/utilities/_height.scss +79 -0
  382. package/styles/qppds/utilities/_list-style.scss +18 -0
  383. package/styles/qppds/utilities/_position.scss +24 -0
  384. package/styles/qppds/utilities/_text-align.scss +40 -0
  385. package/styles/qppds/utilities/_text-transform.scss +7 -0
  386. package/styles/qppds/utilities/_truncate.scss +5 -5
  387. package/styles/qppds/utilities/_vertical-align.scss +72 -0
  388. package/styles/qppds/utilities/_width.scss +38 -1
  389. package/styles/qppds/utilities/index.scss +8 -2
  390. package/svgo.config.js +14 -0
  391. package/test/components/Accordion.test.js +4 -13
  392. package/test/components/ErrorUI.test.js +10 -46
  393. package/test/components/FooterUI.test.js +0 -30
  394. package/test/components/HeaderUI.test.js +32 -40
  395. package/test/components/Infotip.test.js +18 -12
  396. package/test/components/SessionDialogUI.test.js +55 -70
  397. package/test-setup.js +0 -8
  398. package/webpack.config.js +29 -39
  399. package/webpack.config.react.js +7 -18
  400. package/.storybook/.babelrc +0 -4
  401. package/.storybook/main.js +0 -88
  402. package/.storybook/preview-head.html +0 -9
  403. package/.storybook/preview.js +0 -5
  404. package/Session.vim +0 -83
  405. package/components/Accordion/Accordion.stories.js +0 -20
  406. package/components/Breadcrumb/Breadcrumb.stories.js +0 -58
  407. package/components/Button/Button.stories.js +0 -125
  408. package/components/Footer/Footer.stories.js +0 -20
  409. package/components/Footer/LegacyFooterUI.jsx +0 -194
  410. package/components/Header/Header.stories.js +0 -32
  411. package/components/InfoModal/InfoModal.stories.js +0 -98
  412. package/components/InfoModal/index.jsx +0 -104
  413. package/components/Infotip/Infotip.stories.js +0 -50
  414. package/components/Modal/Modal.stories.js +0 -159
  415. package/components/NotificationBanner/NotificationBanner.stories.js +0 -22
  416. package/components/NotificationBanner/NotificationBannerUI.jsx +0 -282
  417. package/components/SideNav/SideNav.stories.js +0 -397
  418. package/components/Spinner/index.js +0 -9
  419. package/components/Tabs/TabsUI.jsx +0 -118
  420. package/components/Tabs/tabs.js +0 -36
  421. package/components/Tooltip/Tooltip.jsx +0 -88
  422. package/components/Tooltip/Tooltip.stories.js +0 -80
  423. package/components/Tooltip/index.js +0 -3
  424. package/components/Tooltip/position.js +0 -68
  425. package/components/UnwrappedSpinner/index.js +0 -8
  426. package/components/UnwrappedTabs/TabPanelUI.jsx +0 -16
  427. package/components/UnwrappedTabs/TabsUI.jsx +0 -82
  428. package/coverage/lcov-report/Accordion/index.html +0 -111
  429. package/coverage/lcov-report/Error/index.html +0 -126
  430. package/coverage/lcov-report/ScoreChart.jsx.html +0 -1025
  431. package/coverage/lcov-report/SideNav/Chart/ScoreChart.jsx.html +0 -1025
  432. package/coverage/lcov-report/components/Footer/LegacyFooterUI.jsx.html +0 -668
  433. package/coverage/lcov-report/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -1010
  434. package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -131
  435. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -89
  436. package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +0 -1007
  437. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -141
  438. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -92
  439. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -92
  440. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -201
  441. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1298
  442. package/coverage/lcov-report/components/SideNav/UI/index.html +0 -126
  443. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -89
  444. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -1319
  445. package/coverage/lcov-report/react/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -926
  446. package/styles/components/_footer.scss +0 -593
  447. package/styles/components/_header_backup.scss +0 -574
  448. package/styles/components/sidebar/_sidebar.scss +0 -141
  449. package/test/components/Tooltip.test.js +0 -147
  450. package/test/components/__snapshots__/Accordion.test.js.snap +0 -11439
  451. package/test/components/__snapshots__/HeaderUI.test.js.snap +0 -3
  452. /package/styles/{components → qppds/components}/sidebar/_animations.scss +0 -0
  453. /package/styles/{components → qppds/components}/sidebar/_cms.scss +0 -0
  454. /package/styles/{components → qppds/components}/sidebar/_details.scss +0 -0
  455. /package/styles/{components → qppds/components}/sidebar/_sidebar-tooltip.scss +0 -0
  456. /package/styles/{components → qppds/components}/sidebar/project-specific/_wi.scss +0 -0
@@ -1,159 +0,0 @@
1
- import React, { useState } from 'react';
2
- import Modal from './index';
3
- import { withKnobs, boolean, text } from '@storybook/addon-knobs';
4
-
5
- export default {
6
- title: 'Modal',
7
- component: Modal,
8
- decorators: [withKnobs],
9
- };
10
-
11
- const useModal = () => {
12
- const [open, setOpen] = useState(false);
13
- const openModal = () => setOpen(true);
14
- const closeModal = () => setOpen(false);
15
- return [open, openModal, closeModal];
16
- };
17
-
18
- export const WithDesignSystem = () => {
19
- const [open, openModal, closeModal] = useModal();
20
- const knobIsOpen = boolean('isOpen', false);
21
- return (
22
- <div className="qpp-u-padding--12">
23
- <button className="qpp-c-button" onClick={openModal}>
24
- Open Modal
25
- </button>
26
- <Modal
27
- useDesignSystem
28
- isOpen={open || knobIsOpen}
29
- title={text('Title text', 'Title Text')}
30
- onRequestClose={closeModal}
31
- >
32
- <p>
33
- {text(
34
- 'bodyText',
35
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ac pulvinar massa, in mattis ligula. Vestibulum enim velit, ullamcorper vitae lorem ullamcorper, blandit fringilla mauris.'
36
- )}
37
- </p>
38
- </Modal>
39
- </div>
40
- );
41
- };
42
-
43
- export const WithDesignSystemDialog = () => {
44
- const [open, openModal, closeModal] = useModal();
45
- const knobIsOpen = boolean('isOpen', false);
46
- return (
47
- <div className="qpp-u-padding--12">
48
- <button className="qpp-c-button" onClick={openModal}>
49
- Open Modal
50
- </button>
51
- <Modal
52
- useDesignSystem
53
- isOpen={open || knobIsOpen}
54
- title={text('Title text', 'Title Text')}
55
- onRequestClose={closeModal}
56
- primary={{
57
- title: 'Yes, go for it',
58
- onClick: () => {
59
- console.log('submit');
60
- closeModal();
61
- },
62
- }}
63
- secondary={{
64
- title: 'No, take me back',
65
- }}
66
- >
67
- <p>
68
- {text(
69
- 'bodyText',
70
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ac pulvinar massa, in mattis ligula. Vestibulum enim velit, ullamcorper vitae lorem ullamcorper, blandit fringilla mauris.'
71
- )}
72
- </p>
73
- </Modal>
74
- </div>
75
- );
76
- };
77
-
78
- export const WithDesignSystemOverflow = () => {
79
- const [open, openModal, closeModal] = useModal();
80
- const knobIsOpen = boolean('isOpen', false);
81
- return (
82
- <div className="qpp-u-padding--12">
83
- <button className="qpp-c-button" onClick={openModal}>
84
- Open Modal
85
- </button>
86
- <Modal
87
- useDesignSystem
88
- isOpen={open || knobIsOpen}
89
- title={text('Title text', 'Title Text')}
90
- onRequestClose={closeModal}
91
- primary={{
92
- title: 'Yes, go for it',
93
- onClick: () => {
94
- console.log('submit');
95
- closeModal();
96
- },
97
- }}
98
- secondary={{
99
- title: 'No, take me back',
100
- }}
101
- >
102
- <p>
103
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ac
104
- pulvinar massa, in mattis ligula. Vestibulum enim velit, ullamcorper
105
- vitae lorem ullamcorper, blandit fringilla mauris. Aenean odio nulla,
106
- dapibus convallis est ac, tempor congue lorem. Aliquam facilisis
107
- tortor eget lectus gravida bibendum. Suspendisse vel posuere risus.
108
- Etiam condimentum sollicitudin est, eget auctor lectus suscipit nec.
109
- Duis efficitur vitae risus at malesuada. Mauris tempus turpis sed
110
- lacus lacinia, et mattis tortor eleifend. In sit amet felis vel quam
111
- egestas ultricies ac ac nisl. Morbi elementum dui libero, non
112
- convallis risus ornare vel. Maecenas posuere ipsum ut sem aliquet,
113
- quis maximus dolor cursus. Praesent vulputate orci tellus, sed
114
- fringilla arcu mollis sit amet. Phasellus eros turpis, consequat sit
115
- amet placerat sed, mollis ac justo.
116
- </p>
117
- <p>
118
- Cras quis pharetra elit. Mauris lacinia quam quis metus mattis
119
- lobortis vel nec arcu. Fusce nec tellus vel nunc cursus vestibulum.
120
- Quisque pretium, arcu at sagittis posuere, leo magna tempus nunc, vel
121
- malesuada nunc mauris ac ante. Donec arcu velit, imperdiet vitae purus
122
- nec, imperdiet auctor nisi. Cras ornare, elit sit amet viverra
123
- bibendum, justo dolor congue mi, quis pretium erat orci a lorem. Sed
124
- rhoncus quam ut tellus hendrerit accumsan.
125
- </p>
126
- <p>
127
- Donec varius elit vitae elit efficitur fermentum. Vestibulum ante
128
- ipsum primis in faucibus orci luctus et ultrices posuere cubilia
129
- curae; Nulla facilisi. Ut malesuada venenatis varius. Nunc libero
130
- massa, luctus sagittis sapien ultrices, pulvinar venenatis purus. In
131
- nec orci ac nibh sagittis lobortis vel sed massa. Morbi pretium odio
132
- vitae malesuada ullamcorper. Pellentesque facilisis posuere
133
- consectetur. Nam maximus finibus ante, non eleifend neque euismod et.
134
- </p>
135
- <p>
136
- Pellentesque vehicula nec massa nec accumsan. Pellentesque non odio eu
137
- felis hendrerit pellentesque non sed neque. Morbi dui nisl, facilisis
138
- id gravida non, vehicula at dui. In eleifend suscipit imperdiet.
139
- Quisque facilisis augue et mi lobortis tristique. Praesent auctor
140
- dictum erat, non mollis ante tempus id. Integer et libero iaculis,
141
- imperdiet neque at, pharetra nisl. Suspendisse diam massa, vehicula eu
142
- varius ullamcorper, semper vel velit. Morbi consequat mattis nisi, id
143
- dignissim est bibendum non. Suspendisse semper laoreet neque, ac
144
- tincidunt tortor. Ut posuere urna a convallis consectetur. Mauris
145
- varius cursus libero sed molestie. Duis id dignissim arcu. Mauris
146
- tincidunt egestas congue.
147
- </p>
148
- <p>
149
- Donec rutrum erat vitae nulla ultricies, quis laoreet orci consequat.
150
- Nunc et justo volutpat dolor feugiat convallis. Vivamus efficitur nisi
151
- quis risus eleifend, ut tincidunt turpis volutpat. Nam commodo turpis
152
- dolor, dapibus rutrum erat facilisis a. Ut a dictum urna. Maecenas vel
153
- egestas odio. Ut venenatis est dolor, eget ullamcorper diam finibus
154
- et. Proin tincidunt porta pellentesque.
155
- </p>
156
- </Modal>
157
- </div>
158
- );
159
- };
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import NotificationBanner from './NotificationBannerUI';
3
- import { withKnobs, boolean } from '@storybook/addon-knobs';
4
-
5
- export default {
6
- title: 'NotificationBanner',
7
- component: NotificationBanner,
8
- decorators: [withKnobs],
9
- };
10
-
11
- export const ExampleNotificationBanner = () => (
12
- <NotificationBanner
13
- dismissable={boolean('dismissable', false)}
14
- content="CONTENT"
15
- label="LABEL"
16
- name="NAME"
17
- fromStorage={false}
18
- color="blue"
19
- />
20
- );
21
-
22
- ExampleNotificationBanner.storyName = 'example NotificationBanner';
@@ -1,282 +0,0 @@
1
- import React, { Component } from 'react';
2
- import PropTypes from 'prop-types';
3
- import SanitizedContent from '../SanitizedContent';
4
- import { CloseXIcon, BellOutline } from '../../lib/SvgComponents.jsx';
5
-
6
- /**
7
- * Renders the QPP NotificationBanner content.
8
- */
9
- export default class NotificationBannerUI extends Component {
10
- /**
11
- * @param {Object} props - An object containing content and config data
12
- * @param {Boolean} props.dismissable - Whether to render a close button
13
- * @param {String} props.content - An HTML string of content
14
- * @param {String} props.name - The unique name of this NotificationBanner
15
- * @param {Boolean} props.fromStorage - Whether to load content from
16
- * localStorage
17
- */
18
- constructor(props) {
19
- super(props);
20
-
21
- this.state = {
22
- content: props.content,
23
- label: props.label,
24
- color: props.color,
25
- };
26
-
27
- this._renderCloseButton = this.renderCloseButton.bind(this);
28
- this._collapseNotification = this.collapseNotification.bind(this);
29
- this._expandNotification = this.expandNotification.bind(this);
30
- this._setBannerHeight = this.setBannerHeight.bind(this);
31
- }
32
-
33
- /**
34
- * If any notifications are found in localStorage, filter to ones that match
35
- * this instance's unique props.name. If the notification is active, set the
36
- * content, otherwise empty it.
37
- */
38
- componentDidMount() {
39
- const notifications = this.getNotificationsFromStorage() || [];
40
- const now = new Date();
41
-
42
- notifications
43
- .filter((x) => x.name === this.props.name)
44
- .forEach((x) => {
45
- if (this.isNotificationCurrent(now, x)) {
46
- this.setState({
47
- content: this.props.fromStorage ? x.content : this.props.content,
48
- label:
49
- this.props.fromStorage && x.label ? x.label : this.props.label,
50
- color:
51
- this.props.fromStorage && x.color ? x.color : this.props.color,
52
- expanded: this.isNotificationExpanded(x),
53
- });
54
- }
55
- });
56
-
57
- if (window.innerWidth <= 767) {
58
- this.setState({
59
- expanded: false,
60
- });
61
- }
62
-
63
- window.addEventListener('load', this._setBannerHeight);
64
- window.addEventListener('resize', this._setBannerHeight);
65
- }
66
-
67
- /**
68
- * Attempt to read notifications from localStorage
69
- * @return {Array} An array of notification objects
70
- */
71
- getNotificationsFromStorage() {
72
- try {
73
- return JSON.parse(window.localStorage.getItem('notifications'));
74
- } catch (e) {
75
- return [];
76
- }
77
- }
78
-
79
- setBannerHeight() {
80
- if (this.state.content) {
81
- this.bannerContainer.style.transition = 'none';
82
-
83
- this.setState({
84
- height: this.state.expanded
85
- ? '100%'
86
- : this.collapsedWrapper.offsetHeight + 'px',
87
- });
88
- }
89
- }
90
-
91
- /**
92
- * Check the notification properties to determine whether it is still active
93
- * based on the current date and time.
94
- *
95
- * @param {Date} now
96
- * @param {Object} notification
97
- * @return {Boolean}
98
- */
99
- isNotificationCurrent(now, notification) {
100
- const startDate = new Date(notification.startDate);
101
- const endDate = new Date(notification.endDate);
102
- const isActive =
103
- (!this.isDateValid(startDate) && !this.isDateValid(endDate)) ||
104
- (startDate <= now && now <= endDate);
105
-
106
- return isActive;
107
- }
108
-
109
- isNotificationExpanded(notification) {
110
- const dateDismissed = new Date(notification.dateDismissed);
111
- const dateUpdated = new Date(notification.dateUpdated);
112
- const notDismissed =
113
- (this.isDateValid(dateUpdated) &&
114
- this.isDateValid(dateDismissed) &&
115
- dateUpdated >= dateDismissed) ||
116
- !this.isDateValid(dateDismissed);
117
-
118
- return notDismissed;
119
- }
120
-
121
- /**
122
- * Whether the date is valid, i.e. not null
123
- *
124
- * @param {Date} date
125
- * @return {Boolean}
126
- */
127
- isDateValid(date) {
128
- return !isNaN(Date.parse(date));
129
- }
130
-
131
- /**
132
- * Try to find this NotificationBanner instance in localStorage, or else add
133
- * a minimal version of it, and mark it with a dateDismissed, then update
134
- * localStorage.
135
- */
136
- markNotificationClosed() {
137
- let found = false;
138
- const dateDismissed = new Date().toISOString();
139
- let notifications = (this.getNotificationsFromStorage() || []).map(
140
- (notification) => {
141
- if (notification.name === this.props.name) {
142
- notification.dateDismissed = dateDismissed;
143
- found = true;
144
- }
145
-
146
- return notification;
147
- }
148
- );
149
-
150
- if (!found) {
151
- notifications = notifications.concat([
152
- {
153
- name: this.props.name,
154
- dateDismissed,
155
- },
156
- ]);
157
- }
158
-
159
- window.localStorage.setItem('notifications', JSON.stringify(notifications));
160
- }
161
-
162
- /**
163
- * Callback when the user dimisses a notification. Mark it as dismissed in
164
- * localStorage, empty the contents, and dispatch a custom event to notify
165
- * any observers that it has been dismissed.
166
- */
167
- collapseNotification(e) {
168
- e.stopPropagation();
169
- this.markNotificationClosed();
170
-
171
- this.bannerContainer.style.transition = 'height .2s ease-out';
172
- this.setState({
173
- expanded: false,
174
- height: this.collapsedWrapper.offsetHeight + 'px',
175
- });
176
- }
177
-
178
- expandNotification() {
179
- if (!this.state.expanded) {
180
- this.bannerContainer.style.transition = 'height .2s ease-out';
181
- this.setState({
182
- expanded: true,
183
- height: '100%',
184
- });
185
- }
186
- }
187
-
188
- /**
189
- * Renders the close button if the notification instance is dismissable.
190
- *
191
- * @return {String} HTML content
192
- */
193
- renderCloseButton() {
194
- if (this.props.dismissable) {
195
- return (
196
- <button
197
- onClick={this._collapseNotification}
198
- type="button"
199
- className="notification-banner-close"
200
- >
201
- <svg className="close-icon" aria-hidden="true" focusable="false">
202
- <CloseXIcon />
203
- </svg>
204
- <span className="sr-only">Close</span>
205
- </button>
206
- );
207
- } else {
208
- return '';
209
- }
210
- }
211
-
212
- /**
213
- * Render the notification if it has any contents.
214
- *
215
- * @return {String} HTML content
216
- */
217
- render() {
218
- if (this.state.content === '') {
219
- return <div id="notification-banner" />;
220
- } else {
221
- const notificationStatus = this.state.expanded ? 'expanded' : 'collapsed';
222
- const className = `notification-banner notification-banner-${this.state.color} ${notificationStatus}`;
223
-
224
- return (
225
- <div
226
- style={{ height: this.state.height }}
227
- ref={(elem) => (this.bannerContainer = elem)}
228
- className={className}
229
- >
230
- <div
231
- ref={(elem) => (this.expandedWrapper = elem)}
232
- className={`notification-banner-wrapper expanded-view`}
233
- >
234
- <div className="notification-banner-label">{this.state.label}</div>
235
- <div className="notification-banner-content">
236
- <SanitizedContent
237
- html={
238
- this.state.expanded
239
- ? this.state.content
240
- : '<p>Nothing to see here</p>'
241
- }
242
- />
243
- </div>
244
- {this.state.expanded && this._renderCloseButton()}
245
- </div>
246
-
247
- <div
248
- ref={(elem) => (this.collapsedWrapper = elem)}
249
- className={`notification-banner-wrapper collapsed-view`}
250
- onClick={this._expandNotification}
251
- >
252
- <button className={`notification-banner-label`}>
253
- {this.state.label}
254
- <span className="bell-icon">
255
- <svg aria-hidden="true" focusable="false">
256
- <BellOutline />
257
- </svg>
258
- </span>
259
- </button>
260
- </div>
261
- </div>
262
- );
263
- }
264
- }
265
- }
266
-
267
- NotificationBannerUI.propTypes = {
268
- dismissable: PropTypes.bool,
269
- content: PropTypes.string,
270
- label: PropTypes.string,
271
- name: PropTypes.string.isRequired,
272
- fromStorage: PropTypes.bool,
273
- color: PropTypes.string,
274
- };
275
-
276
- NotificationBannerUI.defaultProps = {
277
- dismissable: true,
278
- content: '',
279
- fromStorage: false,
280
- label: 'Update',
281
- color: 'blue',
282
- };