qpp-style 0.0.8 → 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 (462) 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/Breadcrumb.md +28 -0
  7. package/components/Breadcrumb/index.js +69 -11
  8. package/components/Button/index.js +90 -0
  9. package/components/CalloutBox/index.js +109 -0
  10. package/components/Card/index.js +137 -0
  11. package/components/Details/DetailsIcons.js +50 -0
  12. package/components/Details/index.js +53 -0
  13. package/components/Dropdown/index.js +85 -0
  14. package/components/DropdownButton/Menu.js +25 -0
  15. package/components/DropdownButton/MenuButton.js +41 -0
  16. package/components/DropdownButton/MenuItem.js +25 -0
  17. package/components/DropdownButton/MenuItemLink.js +27 -0
  18. package/components/Error/Collapsible.jsx +2 -2
  19. package/components/Footer/FooterUI.jsx +175 -177
  20. package/components/Footer/footer.js +2 -12
  21. package/components/GovBanner/index.js +117 -0
  22. package/components/Header/HeaderAccountMenu.jsx +63 -234
  23. package/components/Header/HeaderCancel.jsx +5 -10
  24. package/components/Header/HeaderContainer.jsx +74 -0
  25. package/components/Header/HeaderLogo.jsx +42 -0
  26. package/components/Header/HeaderMenuButton.js +50 -0
  27. package/components/Header/HeaderMenuItem.jsx +239 -0
  28. package/components/Header/HeaderMenuLink.js +56 -0
  29. package/components/Header/HeaderMenuSignOutButton.js +62 -0
  30. package/components/Header/HeaderMobileButton.js +37 -0
  31. package/components/Header/HeaderUI.jsx +130 -361
  32. package/components/Header/HelpIcon.jsx +32 -0
  33. package/components/Header/ImpersonatorBanner.jsx +81 -0
  34. package/components/Header/default-content.json +158 -87
  35. package/components/Header/header.js +2 -0
  36. package/components/Header/hooks.js +66 -0
  37. package/components/Header/utag-helpers.js +9 -0
  38. package/components/Infotip/Infotip.jsx +6 -10
  39. package/components/Infotip/InfotipContent.jsx +46 -0
  40. package/components/Infotip/InfotipIcon.jsx +3 -3
  41. package/components/Link/index.js +61 -0
  42. package/components/Modal/LegacyModal.jsx +72 -0
  43. package/components/Modal/Modal.jsx +140 -0
  44. package/components/Modal/index.jsx +13 -63
  45. package/components/NotificationBanner/CollapsedView.js +39 -0
  46. package/components/NotificationBanner/ExpandedView.js +45 -0
  47. package/components/NotificationBanner/index.js +219 -30
  48. package/components/Search/index.js +98 -0
  49. package/components/SessionDialog/sessionDialog.js +26 -0
  50. package/components/SessionDialogUI.jsx +34 -26
  51. package/components/SideNav/AnimationGroup/AnimationGroup.jsx +10 -4
  52. package/components/SideNav/Chart/ScoreChart.jsx +81 -109
  53. package/components/SideNav/Chart/__tests__/ScoreChart.test.js +3 -12
  54. package/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +144 -35
  55. package/components/SideNav/Chart/index.js +1 -1
  56. package/components/SideNav/Content/LevelOneContent.jsx +146 -258
  57. package/components/SideNav/Content/LevelTwoContent.jsx +6 -4
  58. package/components/SideNav/Content/SelectRole/index.js +77 -0
  59. package/components/SideNav/Content/SelectRole/utils.js +140 -0
  60. package/components/SideNav/Details/PracticeDetails.jsx +4 -0
  61. package/components/SideNav/Links/CmsSwitchLink.jsx +1 -1
  62. package/components/SideNav/Links/NavLinkContainer.jsx +29 -34
  63. package/components/SideNav/Links/NavLinkDrawer.jsx +192 -124
  64. package/components/SideNav/Links/NavLinkInline.jsx +7 -2
  65. package/components/SideNav/Links/NavLinkToggle.jsx +1 -1
  66. package/components/SideNav/SideNav.md +28 -27
  67. package/components/SideNav/UI/SideNavUI.jsx +198 -268
  68. package/components/SideNav/UI/default-content.json +117 -0
  69. package/components/SideNav/helpers.js +316 -4
  70. package/components/Tabs/TabPanel.js +5 -0
  71. package/components/Tabs/Tabs.js +73 -0
  72. package/components/TextInput/index.js +137 -0
  73. package/components/hooks/useGetConfig.js +75 -0
  74. package/components/index.js +106 -9
  75. package/coverage/clover.xml +1194 -748
  76. package/coverage/coverage-final.json +72 -50
  77. package/coverage/lcov-report/block-navigation.js +8 -0
  78. package/coverage/lcov-report/components/Accordion/index.html +26 -21
  79. package/coverage/lcov-report/components/Accordion/index.jsx.html +106 -131
  80. package/coverage/lcov-report/{SideNav/Chart → components/Button}/index.html +29 -24
  81. package/coverage/lcov-report/{Error/Collapsible.jsx.html → components/Button/index.js.html} +125 -114
  82. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +92 -87
  83. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +32 -33
  84. package/coverage/lcov-report/components/Error/index.html +11 -6
  85. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +200 -189
  86. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +24 -61
  87. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +18 -13
  88. package/coverage/lcov-report/components/Footer/index.html +35 -45
  89. package/coverage/lcov-report/components/{InfoModal → GovBanner}/index.html +27 -22
  90. package/coverage/lcov-report/components/{InfoModal/index.jsx.html → GovBanner/index.js.html} +157 -122
  91. package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +93 -520
  92. package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +19 -23
  93. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
  94. package/coverage/lcov-report/components/Header/HeaderLogo.jsx.html +211 -0
  95. package/coverage/lcov-report/components/Header/HeaderMenuButton.js.html +235 -0
  96. package/coverage/lcov-report/components/{Footer/LegacyFooterUI.jsx.html → Header/HeaderMenuItem.jsx.html} +334 -200
  97. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  98. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  99. package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +196 -0
  100. package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +176 -756
  101. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  102. package/coverage/lcov-report/{Accordion/index.jsx.html → components/Header/ImpersonatorBanner.jsx.html} +109 -167
  103. package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +24 -19
  104. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  105. package/coverage/lcov-report/components/Header/index.html +203 -33
  106. package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +35 -42
  107. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +53 -48
  108. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +37 -32
  109. package/coverage/lcov-report/components/Infotip/index.html +8 -3
  110. package/coverage/lcov-report/components/Infotip/index.js.html +8 -3
  111. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
  112. package/coverage/lcov-report/components/Modal/Modal.jsx.html +505 -0
  113. package/coverage/lcov-report/components/Modal/index.html +146 -0
  114. package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Modal/index.jsx.html} +50 -42
  115. package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +202 -0
  116. package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +220 -0
  117. package/coverage/lcov-report/components/NotificationBanner/index.html +58 -23
  118. package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → NotificationBanner/index.js.html} +292 -272
  119. package/coverage/lcov-report/components/SanitizedContent/index.html +8 -3
  120. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +475 -50
  121. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +248 -255
  122. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +272 -408
  123. package/coverage/lcov-report/components/SideNav/Chart/index.html +28 -38
  124. package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +116 -0
  125. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  126. package/coverage/lcov-report/components/SideNav/helpers.js.html +987 -46
  127. package/coverage/lcov-report/components/SideNav/index.html +24 -19
  128. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +70 -65
  129. package/coverage/lcov-report/components/Tooltip/index.html +8 -3
  130. package/coverage/lcov-report/components/Tooltip/index.js.html +8 -3
  131. package/coverage/lcov-report/components/Tooltip/position.js.html +57 -64
  132. package/coverage/lcov-report/components/hooks/index.html +116 -0
  133. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +310 -0
  134. package/coverage/lcov-report/components/index.html +10 -5
  135. package/coverage/lcov-report/index.html +249 -154
  136. package/coverage/lcov-report/{Error/ErrorUI.jsx.html → lib/Chevron.jsx.html} +44 -42
  137. package/coverage/lcov-report/lib/SvgComponents.jsx.html +1840 -0
  138. package/coverage/lcov-report/lib/index.html +34 -14
  139. package/coverage/lcov-report/react/components/Accordion/index.html +26 -21
  140. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +106 -131
  141. package/coverage/lcov-report/react/components/{FlashNotification → Button}/index.html +23 -33
  142. package/coverage/lcov-report/{components/SideNav/Links/NavLinkInline.jsx.html → react/components/Button/index.js.html} +119 -120
  143. package/coverage/lcov-report/react/components/{Tabs → Dropdown}/index.html +23 -33
  144. package/coverage/lcov-report/react/components/{InfoModal/index.jsx.html → Dropdown/index.js.html} +103 -155
  145. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +92 -87
  146. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +32 -33
  147. package/coverage/lcov-report/react/components/Error/error.js.html +25 -20
  148. package/coverage/lcov-report/react/components/Error/index.html +11 -6
  149. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +200 -189
  150. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +14 -15
  151. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +18 -13
  152. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +18 -13
  153. package/coverage/lcov-report/react/components/Footer/footer.js.html +12 -34
  154. package/coverage/lcov-report/react/components/Footer/index.html +35 -45
  155. package/coverage/lcov-report/react/components/{InfoModal → GovBanner}/index.html +27 -22
  156. package/coverage/lcov-report/react/components/{Tabs/TabsUI.jsx.html → GovBanner/index.js.html} +146 -153
  157. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +93 -520
  158. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +19 -23
  159. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +307 -0
  160. package/coverage/lcov-report/{components/SideNav/Links/CmsSwitchLink.jsx.html → react/components/Header/HeaderLogo.jsx.html} +64 -53
  161. package/coverage/lcov-report/{components/SideNav/Links/NavItemInline.jsx.html → react/components/Header/HeaderMenuButton.js.html} +64 -71
  162. package/coverage/lcov-report/{components/SideNav/Links/NavLinkDrawer.jsx.html → react/components/Header/HeaderMenuItem.jsx.html} +284 -261
  163. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +253 -0
  164. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  165. package/coverage/lcov-report/{components/SideNav/Links/NavLinkToggle.jsx.html → react/components/Header/HeaderMobileButton.js.html} +58 -41
  166. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +189 -745
  167. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +181 -0
  168. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +331 -0
  169. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +18 -13
  170. package/coverage/lcov-report/react/components/Header/header.js.html +18 -4
  171. package/coverage/lcov-report/react/components/Header/hooks.js.html +283 -0
  172. package/coverage/lcov-report/react/components/Header/index.html +205 -35
  173. package/coverage/lcov-report/react/components/{Spinner/index.js.html → Header/utag-helpers.js.html} +26 -21
  174. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +53 -48
  175. package/coverage/lcov-report/{components/SideNav/Links/NavLinkContainer.jsx.html → react/components/Infotip/InfotipContent.jsx.html} +83 -60
  176. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +37 -32
  177. package/coverage/lcov-report/react/components/Infotip/index.html +8 -3
  178. package/coverage/lcov-report/react/components/Infotip/index.js.html +8 -3
  179. package/coverage/lcov-report/react/components/{FlashNotification/FlashNotificationUI.jsx.html → Modal/LegacyModal.jsx.html} +89 -84
  180. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +505 -0
  181. package/coverage/lcov-report/react/components/Modal/index.html +52 -17
  182. package/coverage/lcov-report/react/components/Modal/index.jsx.html +38 -201
  183. package/coverage/lcov-report/react/components/{Tabs/tabs.js.html → NotificationBanner/CollapsedView.js.html} +61 -47
  184. package/coverage/lcov-report/{components/SideNav/Details/PracticeDetails.jsx.html → react/components/NotificationBanner/ExpandedView.js.html} +74 -57
  185. package/coverage/lcov-report/react/components/NotificationBanner/index.html +58 -23
  186. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +615 -43
  187. package/coverage/lcov-report/react/components/SanitizedContent/index.html +8 -3
  188. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +478 -53
  189. package/coverage/lcov-report/react/components/{Spinner → SessionDialog}/index.html +11 -6
  190. package/coverage/lcov-report/react/components/{FlashNotification/index.js.html → SessionDialog/sessionDialog.js.html} +35 -42
  191. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +248 -255
  192. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +53 -18
  193. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +18 -13
  194. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +272 -402
  195. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +28 -23
  196. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +9 -4
  197. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +190 -521
  198. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +23 -12
  199. package/coverage/lcov-report/{components/SideNav/Details → react/components/SideNav/Content/SelectRole}/index.html +42 -52
  200. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +316 -0
  201. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  202. package/coverage/lcov-report/react/components/SideNav/Content/index.html +32 -27
  203. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +8 -3
  204. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +20 -24
  205. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +54 -37
  206. package/coverage/lcov-report/react/components/SideNav/Details/index.html +23 -18
  207. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +8 -3
  208. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +9 -4
  209. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +8 -3
  210. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +56 -57
  211. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +351 -142
  212. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +60 -40
  213. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +9 -4
  214. package/coverage/lcov-report/react/components/SideNav/Links/index.html +44 -39
  215. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +8 -3
  216. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +243 -433
  217. package/coverage/lcov-report/react/components/SideNav/UI/index.html +28 -23
  218. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +8 -3
  219. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +958 -17
  220. package/coverage/lcov-report/react/components/SideNav/index.html +27 -22
  221. package/coverage/lcov-report/react/components/SideNav/index.js.html +8 -3
  222. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +70 -65
  223. package/coverage/lcov-report/react/components/Tooltip/index.html +8 -3
  224. package/coverage/lcov-report/react/components/Tooltip/index.js.html +8 -3
  225. package/coverage/lcov-report/react/components/Tooltip/position.js.html +57 -64
  226. package/coverage/lcov-report/{components/SideNav/AnimationGroup → react/components/hooks}/index.html +29 -24
  227. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +310 -0
  228. package/coverage/lcov-report/react/components/index.html +10 -5
  229. package/coverage/lcov-report/react/index.html +20 -15
  230. package/coverage/lcov-report/react/index.js.html +29 -9
  231. package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
  232. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +195 -106
  233. package/coverage/lcov-report/react/lib/index.html +37 -17
  234. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +57 -916
  235. package/coverage/lcov-report/react/session/index.html +32 -27
  236. package/coverage/lcov-report/react/session/index.js.html +8 -3
  237. package/coverage/lcov-report/react/session/logout.js.html +121 -17
  238. package/coverage/lcov-report/react/session/refresh.js.html +11 -6
  239. package/coverage/lcov-report/react/session/ttl.js.html +8 -3
  240. package/coverage/lcov-report/session/index.html +50 -45
  241. package/coverage/lcov-report/session/index.js.html +8 -3
  242. package/coverage/lcov-report/session/logout.js.html +144 -49
  243. package/coverage/lcov-report/session/refresh.js.html +41 -36
  244. package/coverage/lcov-report/session/ttl.js.html +34 -29
  245. package/coverage/lcov-report/sorter.js +26 -0
  246. package/coverage/lcov.info +2427 -1491
  247. package/dist/browser.js +1 -1
  248. package/dist/browser.js.LICENSE.txt +1 -7
  249. package/dist/browser.js.map +1 -1
  250. package/dist/index.js +1 -1
  251. package/dist/index.js.LICENSE.txt +1 -7
  252. package/dist/index.js.map +1 -1
  253. package/dist/react/index.js +1 -1
  254. package/dist/react/index.js.LICENSE.txt +16 -16
  255. package/dist/react/index.js.map +1 -1
  256. package/fonts/PublicSans-Black.ttf +0 -0
  257. package/fonts/PublicSans-BlackItalic.ttf +0 -0
  258. package/fonts/PublicSans-Bold.ttf +0 -0
  259. package/fonts/PublicSans-BoldItalic.ttf +0 -0
  260. package/fonts/PublicSans-ExtraBold.ttf +0 -0
  261. package/fonts/PublicSans-ExtraBoldItalic.ttf +0 -0
  262. package/fonts/PublicSans-ExtraLight.ttf +0 -0
  263. package/fonts/PublicSans-ExtraLightItalic.ttf +0 -0
  264. package/fonts/PublicSans-Italic.ttf +0 -0
  265. package/fonts/PublicSans-Light.ttf +0 -0
  266. package/fonts/PublicSans-LightItalic.ttf +0 -0
  267. package/fonts/PublicSans-Medium.ttf +0 -0
  268. package/fonts/PublicSans-MediumItalic.ttf +0 -0
  269. package/fonts/PublicSans-Regular.ttf +0 -0
  270. package/fonts/PublicSans-SemiBold.ttf +0 -0
  271. package/fonts/PublicSans-SemiBoldItalic.ttf +0 -0
  272. package/fonts/PublicSans-Thin.ttf +0 -0
  273. package/fonts/PublicSans-ThinItalic.ttf +0 -0
  274. package/images/icon-dot-gov.svg +1 -0
  275. package/images/icon-https.svg +1 -0
  276. package/images/icons/close-x.svg +6 -0
  277. package/images/icons/svg/arrow-down.svg +3 -0
  278. package/images/icons/svg/arrow-download.svg +1 -0
  279. package/images/icons/svg/arrow-right.svg +1 -0
  280. package/images/icons/svg/arrow-up.svg +3 -0
  281. package/images/icons/svg/block.svg +5 -0
  282. package/images/icons/svg/calendar.svg +1 -0
  283. package/images/icons/svg/check-circle.svg +5 -0
  284. package/images/icons/svg/checkmark.svg +7 -0
  285. package/images/icons/svg/chevron-down.svg +11 -0
  286. package/images/icons/svg/chevron-left.svg +12 -0
  287. package/images/icons/svg/chevron-right.svg +12 -0
  288. package/images/icons/svg/chevron-up.svg +12 -0
  289. package/images/icons/svg/clipboard.svg +1 -0
  290. package/images/icons/svg/close.svg +1 -0
  291. package/images/icons/svg/divide.svg +13 -0
  292. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  293. package/images/icons/svg/download.svg +1 -0
  294. package/images/icons/svg/dropdown-arrow.svg +1 -0
  295. package/images/icons/svg/equals.svg +13 -0
  296. package/images/icons/svg/exclamation.svg +11 -0
  297. package/images/icons/svg/external.svg +1 -0
  298. package/images/icons/svg/file-download.svg +1 -0
  299. package/images/icons/svg/file-upload.svg +1 -0
  300. package/images/icons/svg/info.svg +20 -0
  301. package/images/icons/svg/manage-user-access.svg +8 -0
  302. package/images/icons/svg/multiply.svg +12 -0
  303. package/images/icons/svg/performance-feedback.svg +1 -0
  304. package/images/icons/svg/plus.svg +12 -0
  305. package/images/icons/svg/preview.svg +17 -0
  306. package/images/icons/svg/print.svg +1 -0
  307. package/images/icons/svg/registration.svg +8 -0
  308. package/images/icons/svg/reporting.svg +17 -0
  309. package/images/icons/svg/save-disk.svg +5 -0
  310. package/images/icons/svg/search.svg +1 -0
  311. package/images/icons/svg/subtract.svg +15 -0
  312. package/images/icons/svg/targeted-review.svg +15 -0
  313. package/images/icons/svg/tooltip-question.svg +1 -0
  314. package/images/icons/svg/trash.svg +1 -0
  315. package/images/icons/svg/upload.svg +1 -0
  316. package/images/us_flag_small.png +0 -0
  317. package/index.js +5 -0
  318. package/jest.config.js +138 -134
  319. package/lib/Chevron.jsx +32 -0
  320. package/lib/SvgComponents.jsx +197 -49
  321. package/package.json +62 -77
  322. package/session/logout.js +35 -2
  323. package/styles/_global.scss +63 -62
  324. package/styles/_main.scss +6 -0
  325. package/styles/_qpp-style.scss +0 -3
  326. package/styles/components/_accordion.scss +249 -246
  327. package/styles/components/_autocomplete.scss +0 -3
  328. package/styles/components/_modals.scss +9 -9
  329. package/styles/components/_spinner.scss +0 -2
  330. package/styles/components/_tables.scss +77 -67
  331. package/styles/components/_text.scss +102 -102
  332. package/styles/components/_variables.scss +12 -12
  333. package/styles/qppds/base/_backgrounds.scss +7 -0
  334. package/styles/qppds/base/_fonts.scss +24 -0
  335. package/styles/qppds/base/_icon.scss +31 -0
  336. package/styles/qppds/base/_layout.scss +5 -0
  337. package/styles/qppds/base/_typography.scss +78 -44
  338. package/styles/qppds/base/index.scss +4 -5
  339. package/styles/qppds/components/_alert.scss +101 -0
  340. package/styles/qppds/components/_breadcrumbs.scss +42 -6
  341. package/styles/qppds/components/_button.scss +129 -11
  342. package/styles/qppds/components/_card.scss +175 -0
  343. package/styles/qppds/components/_checkbox.scss +199 -0
  344. package/styles/qppds/components/_circular-loader.scss +47 -0
  345. package/styles/qppds/components/_details.scss +90 -0
  346. package/styles/qppds/components/_dropdown-menu.scss +125 -0
  347. package/styles/qppds/components/_dropdown.scss +7 -1
  348. package/styles/qppds/components/_footer.scss +606 -0
  349. package/styles/qppds/components/_gov-banner.scss +344 -0
  350. package/styles/qppds/components/_header.scss +913 -0
  351. package/styles/qppds/components/_link.scss +52 -0
  352. package/styles/qppds/components/_modal.scss +118 -0
  353. package/styles/qppds/components/_page-header.scss +65 -2
  354. package/styles/qppds/components/_pagination.scss +227 -0
  355. package/styles/qppds/components/_process-list.scss +104 -0
  356. package/styles/qppds/components/_radio-button.scss +184 -0
  357. package/styles/qppds/components/_search.scss +118 -0
  358. package/styles/{components → qppds/components}/_sidebar.scss +2 -0
  359. package/styles/qppds/components/_step-indicator.scss +190 -0
  360. package/styles/qppds/components/_table.scss +157 -0
  361. package/styles/qppds/components/_tabs.scss +197 -0
  362. package/styles/qppds/components/_text-input.scss +60 -0
  363. package/styles/qppds/components/index.scss +20 -0
  364. package/styles/{components → qppds/components}/sidebar/_links.scss +48 -1
  365. package/styles/qppds/components/sidebar/_select-role-dropdown.scss +21 -0
  366. package/styles/qppds/components/sidebar/_sidebar-animation.scss +125 -0
  367. package/styles/qppds/components/sidebar/_sidebar.scss +146 -0
  368. package/styles/{components → qppds/components}/sidebar/project-specific/_wi.scss +1 -37
  369. package/styles/qppds/settings/_functions.scss +3 -1
  370. package/styles/qppds/settings/mixins/_borders.scss +6 -0
  371. package/styles/qppds/settings/mixins/_focus.scss +28 -0
  372. package/styles/qppds/settings/mixins/_icons.scss +39 -4
  373. package/styles/qppds/settings/mixins/_index.scss +4 -0
  374. package/styles/qppds/settings/mixins/_layout.scss +46 -7
  375. package/styles/qppds/settings/mixins/_table.scss +91 -0
  376. package/styles/qppds/settings/mixins/_type.scss +89 -0
  377. package/styles/qppds/settings/variables/_color.scss +47 -1
  378. package/styles/qppds/settings/variables/_index.scss +2 -1
  379. package/styles/qppds/settings/variables/_layout.scss +34 -9
  380. package/styles/qppds/settings/variables/_type.scss +41 -0
  381. package/styles/qppds/settings/variables/_z-index.scss +8 -0
  382. package/styles/qppds/utilities/_background-color.scss +4 -0
  383. package/styles/qppds/utilities/_color.scss +28 -0
  384. package/styles/qppds/utilities/{_display-visability.scss → _display-visibility.scss} +8 -0
  385. package/styles/qppds/utilities/_flexbox.scss +113 -0
  386. package/styles/qppds/utilities/_font-family.scss +4 -0
  387. package/styles/qppds/utilities/_gap.scss +38 -0
  388. package/styles/qppds/utilities/_height.scss +79 -0
  389. package/styles/qppds/utilities/_list-style.scss +18 -0
  390. package/styles/qppds/utilities/_position.scss +24 -0
  391. package/styles/qppds/utilities/_text-align.scss +40 -0
  392. package/styles/qppds/utilities/_text-transform.scss +7 -0
  393. package/styles/qppds/utilities/_truncate.scss +5 -5
  394. package/styles/qppds/utilities/_vertical-align.scss +72 -0
  395. package/styles/qppds/utilities/_width.scss +38 -1
  396. package/styles/qppds/utilities/index.scss +8 -2
  397. package/styles/third-party/legacy-bootstrap/_dropdowns.scss +0 -1
  398. package/svgo.config.js +14 -0
  399. package/test/components/Accordion.test.js +4 -13
  400. package/test/components/ErrorUI.test.js +10 -46
  401. package/test/components/FooterUI.test.js +0 -30
  402. package/test/components/HeaderUI.test.js +33 -15
  403. package/test/components/Infotip.test.js +18 -12
  404. package/test/components/SessionDialogUI.test.js +55 -70
  405. package/test/components/SideNavUI.test.js +6 -13
  406. package/test-setup.js +1 -3
  407. package/webpack.config.js +29 -39
  408. package/webpack.config.react.js +7 -18
  409. package/.storybook/.babelrc +0 -4
  410. package/.storybook/main.js +0 -89
  411. package/.storybook/preview-head.html +0 -9
  412. package/.storybook/preview.js +0 -16
  413. package/components/Accordion/Accordion.stories.js +0 -20
  414. package/components/Breadcrumb/Breadcrumb.js +0 -58
  415. package/components/Breadcrumb/Breadcrumb.stories.js +0 -62
  416. package/components/Breadcrumb/LegacyBreadcrumb.js +0 -46
  417. package/components/Footer/Footer.stories.js +0 -22
  418. package/components/Footer/LegacyFooterUI.jsx +0 -194
  419. package/components/Header/Header.stories.js +0 -32
  420. package/components/InfoModal/InfoModal.stories.js +0 -98
  421. package/components/InfoModal/index.jsx +0 -104
  422. package/components/Infotip/Infotip.stories.js +0 -58
  423. package/components/NotificationBanner/NotificationBanner.stories.js +0 -24
  424. package/components/NotificationBanner/NotificationBannerUI.jsx +0 -282
  425. package/components/SideNav/SideNav.stories.js +0 -320
  426. package/components/Spinner/index.js +0 -9
  427. package/components/Tabs/TabsUI.jsx +0 -118
  428. package/components/Tabs/tabs.js +0 -36
  429. package/components/Tooltip/Tooltip.jsx +0 -88
  430. package/components/Tooltip/Tooltip.stories.js +0 -90
  431. package/components/Tooltip/index.js +0 -3
  432. package/components/Tooltip/position.js +0 -68
  433. package/components/UnwrappedSpinner/index.js +0 -8
  434. package/components/UnwrappedTabs/TabPanelUI.jsx +0 -16
  435. package/components/UnwrappedTabs/TabsUI.jsx +0 -82
  436. package/coverage/lcov-report/Accordion/index.html +0 -111
  437. package/coverage/lcov-report/Error/index.html +0 -126
  438. package/coverage/lcov-report/ScoreChart.jsx.html +0 -1025
  439. package/coverage/lcov-report/SideNav/Chart/ScoreChart.jsx.html +0 -1025
  440. package/coverage/lcov-report/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -1010
  441. package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -131
  442. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -89
  443. package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +0 -1007
  444. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -141
  445. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -92
  446. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -92
  447. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -201
  448. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1298
  449. package/coverage/lcov-report/components/SideNav/UI/index.html +0 -126
  450. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -89
  451. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -1319
  452. package/coverage/lcov-report/react/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -926
  453. package/styles/components/_footer.scss +0 -593
  454. package/styles/components/_header.scss +0 -526
  455. package/styles/components/sidebar/_sidebar-animation.scss +0 -85
  456. package/styles/components/sidebar/_sidebar.scss +0 -141
  457. package/test/components/Tooltip.test.js +0 -147
  458. package/test/components/__snapshots__/Accordion.test.js.snap +0 -11439
  459. /package/styles/{components → qppds/components}/sidebar/_animations.scss +0 -0
  460. /package/styles/{components → qppds/components}/sidebar/_cms.scss +0 -0
  461. /package/styles/{components → qppds/components}/sidebar/_details.scss +0 -0
  462. /package/styles/{components → qppds/components}/sidebar/_sidebar-tooltip.scss +0 -0
@@ -0,0 +1,98 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { SearchIcon } from '../../lib/SvgComponents';
4
+
5
+ const Search = ({
6
+ id,
7
+ name,
8
+ placeholder,
9
+ disableSearchBtn,
10
+ disabled,
11
+ inputValue,
12
+ onClick,
13
+ onChange,
14
+ inputAriaLabel,
15
+ buttonAriaLabel,
16
+ inputWidth,
17
+ label,
18
+ parentElement,
19
+ }) => {
20
+ const ContainerElement = parentElement || 'span';
21
+ const inputStyle = {
22
+ width: inputWidth,
23
+ };
24
+ return (
25
+ <ContainerElement className="qppds">
26
+ <form role="search" className="qpp-c-search qpp-c-search--compact">
27
+ <label
28
+ className={label ? 'qpp-u-margin-bottom--8' : 'qpp-u-visually-hidden'}
29
+ htmlFor={id}
30
+ >
31
+ {label ? label : 'Search'}
32
+ </label>
33
+
34
+ <div className="qpp-c-search__wrap">
35
+ <input
36
+ style={inputStyle}
37
+ className="qpp-c-text-input"
38
+ type="search"
39
+ id={id}
40
+ name={name}
41
+ placeholder={placeholder}
42
+ value={inputValue}
43
+ disabled={disabled}
44
+ onChange={onChange}
45
+ aria-label={inputAriaLabel}
46
+ />
47
+
48
+ <button
49
+ data-testid="search-btn"
50
+ aria-label={buttonAriaLabel}
51
+ onClick={onClick}
52
+ disabled={disableSearchBtn}
53
+ id={`${id}-submit`}
54
+ type="submit"
55
+ className="qpp-c-search__submit qpp-c-button qpp-c-button--text"
56
+ >
57
+ <span className="qpp-u-visually-hidden">Search</span>
58
+ <SearchIcon viewBox="0 0 45 50" />
59
+ </button>
60
+ </div>
61
+ </form>
62
+ </ContainerElement>
63
+ );
64
+ };
65
+
66
+ Search.propTypes = {
67
+ id: PropTypes.string,
68
+ name: PropTypes.string,
69
+ placeholder: PropTypes.string,
70
+ disableSearchBtn: PropTypes.bool,
71
+ disabled: PropTypes.bool,
72
+ inputValue: PropTypes.string,
73
+ onClick: PropTypes.func,
74
+ onChange: PropTypes.func,
75
+ inputAriaLabel: PropTypes.string,
76
+ buttonAriaLabel: PropTypes.string,
77
+ inputWidth: PropTypes.string,
78
+ label: PropTypes.string,
79
+ parentElement: PropTypes.string,
80
+ };
81
+
82
+ Search.defaultProps = {
83
+ label: null,
84
+ id: 'search-input',
85
+ name: '',
86
+ placeholder: '',
87
+ disableSearchBtn: false,
88
+ disabled: false,
89
+ inputValue: '',
90
+ onClick: () => null,
91
+ onChange: () => null,
92
+ inputAriaLabel: '',
93
+ buttonAriaLabel: '',
94
+ inputWidth: 'auto',
95
+ parentElement: 'span',
96
+ };
97
+
98
+ export default Search;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { render } from 'react-dom';
3
+ import SessionDialogUI from '../SessionDialogUI';
4
+
5
+ /**
6
+ * Renders the Session Dialog UI content.
7
+ */
8
+ export default class SessionDialog {
9
+ /**
10
+ * @param {Object} options - An object containing content and config data
11
+ * @param {Boolean} options.showImmediate
12
+ * @param {Number} options.warningTimeout
13
+ * @param {String} options.appElement
14
+ * @param {HTMLElement} options.rootElement - Elem inside which to render
15
+ */
16
+ constructor(options) {
17
+ render(
18
+ <SessionDialogUI
19
+ showImmediate={options.showImmediate}
20
+ warningTimeout={options.warningTimeout}
21
+ appElement={options.appElement}
22
+ />,
23
+ options.rootElement
24
+ );
25
+ }
26
+ }
@@ -1,9 +1,10 @@
1
1
  import React, { Component } from 'react';
2
- import InfoModal from './InfoModal';
3
2
  import PropTypes from 'prop-types';
4
3
  import cookie from 'cookie';
5
4
  import retry from 'retry';
6
5
  import jwtDecode from 'jwt-decode';
6
+
7
+ import Modal from './Modal';
7
8
  import RefreshSession from '../session/refresh';
8
9
  import LogoutSession from '../session/logout';
9
10
  import fetchTtl from '../session/ttl';
@@ -203,38 +204,45 @@ export default class SessionDialogUI extends Component {
203
204
  this.handleCloseModal();
204
205
  }
205
206
 
206
- /**
207
- * Renders a ReactModal component.
208
- * See: https://reactcommunity.org/react-modal/
209
- */
210
207
  render() {
211
208
  return (
212
209
  <React.Fragment>
213
- <InfoModal
214
- appElement={this.props.appElement}
210
+ <Modal
211
+ useDesignSystem
212
+ title="You will be signed out within two minutes"
215
213
  isOpen={this.state.showModal}
216
- primaryAction="Keep me signed in"
217
- primaryCallback={this.refreshSession}
218
- secondaryAction="Sign me out now"
219
- secondaryCallback={this.signOut}
214
+ primary={{
215
+ title: 'Keep me signed in',
216
+ onClick: this.refreshSession,
217
+ }}
218
+ secondary={{
219
+ title: 'Sign me out now',
220
+ onClick: this.signOut,
221
+ }}
220
222
  onRequestClose={this.handleCloseModal}
221
- closeXAction={this.handleCloseModal}
222
- titleText="You will be signed out within two minutes"
223
- bodyText={`You have been inactive for thirty minutes. For
224
- your security, we will sign you out automatically.`}
225
- />
226
- <InfoModal
227
- appElement={this.props.appElement}
223
+ >
224
+ <p>
225
+ You have been inactive for thirty minutes. For your security, we
226
+ will sign you out automatically.
227
+ </p>
228
+ </Modal>
229
+
230
+ <Modal
231
+ useDesignSystem
232
+ title="Technical Difficulties"
228
233
  isOpen={this.state.showError}
229
- primaryAction="Sign out"
230
- primaryCallback={this.signOut}
234
+ primary={{
235
+ title: 'Sign Out',
236
+ onClick: this.signOut,
237
+ }}
231
238
  onRequestClose={this.signOut}
232
- closeXAction={this.signOut}
233
- titleText="Technical Difficulties"
234
- bodyText={`We're experiencing technical difficulties. Please log in again
235
- to continue. For your security, we will sign you out automatically within
236
- two minutes.`}
237
- />
239
+ >
240
+ <p>
241
+ Were experiencing technical difficulties. Please log in again to
242
+ continue. For your security, we will sign you out automatically
243
+ within two minutes.
244
+ </p>
245
+ </Modal>
238
246
  </React.Fragment>
239
247
  );
240
248
  }
@@ -1,12 +1,16 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- const AnimationGroup = ({ display, children }) => {
4
+ const hasDarkerBackground = (darkerBackground) => {
5
+ return darkerBackground ? 'background-highlight' : '';
6
+ };
7
+
8
+ const AnimationGroup = ({ display, className, children, darkerBackground }) => {
5
9
  return (
6
10
  <div
7
- className={`animation-group ${
8
- display ? 'animation-group-enter' : 'animation-group-exit'
9
- }`}
11
+ className={`animation-group animation-group-${className || 'default'}${
12
+ display ? ' animation-group-enter' : ' animation-group-exit'
13
+ } ${hasDarkerBackground(darkerBackground)}`}
10
14
  >
11
15
  {children}
12
16
  </div>
@@ -15,7 +19,9 @@ const AnimationGroup = ({ display, children }) => {
15
19
 
16
20
  AnimationGroup.propTypes = {
17
21
  children: PropTypes.node,
22
+ className: PropTypes.string,
18
23
  display: PropTypes.bool,
24
+ darkerBackground: PropTypes.bool,
19
25
  };
20
26
 
21
27
  export default AnimationGroup;
@@ -1,4 +1,4 @@
1
- import React, { Component } from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import { pie, arc } from 'd3-shape';
3
3
  import { select, event } from 'd3-selection';
4
4
  import PropTypes from 'prop-types';
@@ -8,51 +8,27 @@ const HEIGHT = 210;
8
8
  const RADIUS = Math.min(WIDTH, HEIGHT) / 2;
9
9
  const GAP_VALUE = 2.5;
10
10
 
11
- export default class ScoreChart extends Component {
12
- constructor(props) {
13
- super(props);
14
- this.draw = this.draw.bind(this);
15
- this.toggleLegend = this.toggleLegend.bind(this);
16
- this.getAdvancingCareLabel = this.getAdvancingCareLabel.bind(this);
17
- this.state = {
18
- legend: false,
19
- titleMapping: {
20
- quality: 'Quality Measures',
21
- aci: 'Advancing Care Info',
22
- pi: 'Promoting Interoperability',
23
- ia: 'Improvement Activities',
24
- cost: 'Cost',
25
- },
26
- };
27
- }
11
+ const ScoreChart = ({ performanceYear, chartData, linkCallback }) => {
12
+ const [hasLegend, setHasLegend] = useState(false);
13
+ const [titleMapping, setTitleMapping] = useState({
14
+ quality: 'Quality Measures',
15
+ aci: 'Advancing Care Info',
16
+ pi: 'Promoting Interoperability',
17
+ ia: 'Improvement Activities',
18
+ cost: 'Cost',
19
+ });
28
20
 
29
- componentDidMount() {
30
- const { chartData } = this.props;
31
- if (chartData && chartData.finalScore) {
32
- this.draw(chartData);
33
- this.getAdvancingCareLabel();
34
- }
35
- }
21
+ const { categories } = chartData;
22
+ let legendToggler;
23
+ let legend;
36
24
 
37
- UNSAFE_componentWillReceiveProps({ chartData }) {
38
- if (chartData && chartData.finalScore) {
39
- this.draw(chartData);
40
- this.getAdvancingCareLabel();
25
+ const getAdvancingCareLabel = () => {
26
+ if (performanceYear > 2017) {
27
+ setTitleMapping({ ...titleMapping, aci: 'Promoting Interoperability' });
41
28
  }
42
- }
29
+ };
43
30
 
44
- getAdvancingCareLabel() {
45
- if (this.props.performanceYear > 2017) {
46
- const newState = Object.assign({}, this.state.titleMapping);
47
- newState.aci = 'Promoting Interoperability';
48
-
49
- this.setState({
50
- titleMapping: newState,
51
- });
52
- }
53
- }
54
-
55
- redirectToCategory(link, categoryId) {
31
+ const redirectToCategory = (link, categoryId) => {
56
32
  if (!link) {
57
33
  return;
58
34
  }
@@ -66,14 +42,14 @@ export default class ScoreChart extends Component {
66
42
  });
67
43
  }
68
44
 
69
- if (this.props.linkCallback) {
70
- this.props.linkCallback(link);
45
+ if (linkCallback) {
46
+ linkCallback(link);
71
47
  } else {
72
48
  window.location.href = link;
73
49
  }
74
- }
50
+ };
75
51
 
76
- draw(chartData) {
52
+ const draw = (chartData) => {
77
53
  const scorePie = pie().sort(null);
78
54
 
79
55
  // Removing invalid categories
@@ -164,20 +140,20 @@ export default class ScoreChart extends Component {
164
140
  const code = event.keyCode || event.which;
165
141
  if (code === 13) {
166
142
  const { name, link } = categories[parseInt(i / 3)];
167
- this.redirectToCategory(link, name);
143
+ redirectToCategory(link, name);
168
144
  }
169
145
  })
170
146
  // On click - go to category page
171
147
  .on('click', (d, i) => {
172
148
  const { name, link } = categories[parseInt(i / 3)];
173
- this.redirectToCategory(link, name);
149
+ redirectToCategory(link, name);
174
150
  });
175
151
 
176
152
  // Add accessibility description
177
153
  arcs.append('desc').text((d, i) => {
178
154
  if (i % 3 === 0) {
179
155
  const { name, value, maxContribution } = categories[parseInt(i / 3)];
180
- return `${this.state.titleMapping[name]} ${value} out of ${maxContribution}`;
156
+ return `${titleMapping[name]} ${value} out of ${maxContribution}`;
181
157
  }
182
158
  });
183
159
 
@@ -189,7 +165,7 @@ export default class ScoreChart extends Component {
189
165
  const { name, value, maxContribution } = categories[parseInt(i / 3)];
190
166
  select('.chart-tooltip')
191
167
  .style('opacity', 1)
192
- .text(`${this.state.titleMapping[name]} ${value}/${maxContribution}`);
168
+ .text(`${titleMapping[name]} ${value}/${maxContribution}`);
193
169
  })
194
170
  // On mouse move - move category tooltip
195
171
  .on('mousemove', () => {
@@ -221,76 +197,72 @@ export default class ScoreChart extends Component {
221
197
  .attr('y', 24)
222
198
  .attr('class', 'chart-subtitle')
223
199
  .text('OUT OF 100');
224
- }
225
-
226
- toggleLegend() {
227
- this.setState({ legend: !this.state.legend });
228
- }
200
+ };
229
201
 
230
- render() {
231
- const { categories } = this.props.chartData;
232
- let legendToggler;
233
- let legend;
202
+ const toggleLegend = () => {
203
+ setHasLegend(!hasLegend);
204
+ };
234
205
 
235
- if (this.state.legend) {
236
- legendToggler = (
237
- <button className="open" type="button" aria-pressed="true">
238
- Hide Legend
239
- <svg
240
- className="right-icon rotated"
241
- aria-hidden="true"
242
- focusable="false"
243
- >
244
- <use xlinkHref="#chevron-down" />
245
- </svg>
246
- </button>
247
- );
248
- legend = categories.map(
249
- ({ name, value, maxContribution, link }, index) => {
250
- return (
251
- <li key={name} className="legend-axis">
252
- <button onClick={() => this.redirectToCategory(link, name)}>
253
- <span className={`legend-axis-color ${name}`} />
254
- &nbsp;
255
- <span className="legend-axis-title">
256
- {this.state.titleMapping[name]}
257
- </span>
258
- &nbsp;
259
- <span className="legend-axis-value">{`${value}/${maxContribution}`}</span>
260
- </button>
261
- </li>
262
- );
263
- }
264
- );
265
- } else {
266
- legendToggler = (
267
- <button type="button" aria-pressed="false">
268
- Show Legend
269
- <svg className="right-icon" aria-hidden="true" focusable="false">
270
- <use xlinkHref="#chevron-down" />
271
- </svg>
272
- </button>
273
- );
206
+ useEffect(() => {
207
+ if (chartData?.finalScore) {
208
+ draw(chartData);
209
+ getAdvancingCareLabel();
274
210
  }
211
+ }, [chartData?.finalScore]);
275
212
 
276
- return (
277
- <div className="chart">
213
+ if (hasLegend) {
214
+ legendToggler = (
215
+ <button className="open" type="button" aria-pressed="true">
216
+ Hide Legend
278
217
  <svg
279
- className="score-chart"
218
+ className="right-icon rotated"
219
+ aria-hidden="true"
280
220
  focusable="false"
281
- />
282
- <div className="chart-tooltip off" />
283
- <div className="chart-legend-toggler" onClick={this.toggleLegend}>
284
- {legendToggler}
285
- </div>
286
- <ul className="chart-legend">{legend}</ul>
287
- </div>
221
+ >
222
+ <use xlinkHref="#chevron-down" />
223
+ </svg>
224
+ </button>
225
+ );
226
+ legend = categories.map(({ name, value, maxContribution, link }, index) => {
227
+ return (
228
+ <li key={name} className="legend-axis">
229
+ <button onClick={() => redirectToCategory(link, name)}>
230
+ <span className={`legend-axis-color ${name}`} />
231
+ &nbsp;
232
+ <span className="legend-axis-title">{titleMapping[name]}</span>
233
+ &nbsp;
234
+ <span className="legend-axis-value">{`${value}/${maxContribution}`}</span>
235
+ </button>
236
+ </li>
237
+ );
238
+ });
239
+ } else {
240
+ legendToggler = (
241
+ <button type="button" aria-pressed="false">
242
+ Show Legend
243
+ <svg className="right-icon" aria-hidden="true" focusable="false">
244
+ <use xlinkHref="#chevron-down" />
245
+ </svg>
246
+ </button>
288
247
  );
289
248
  }
290
- }
249
+
250
+ return (
251
+ <div className="chart">
252
+ <svg className="score-chart" focusable="false" />
253
+ <div className="chart-tooltip off" />
254
+ <div className="chart-legend-toggler" onClick={toggleLegend}>
255
+ {legendToggler}
256
+ </div>
257
+ <ul className="chart-legend">{legend}</ul>
258
+ </div>
259
+ );
260
+ };
291
261
 
292
262
  ScoreChart.propTypes = {
293
263
  chartData: PropTypes.object,
294
264
  linkCallback: PropTypes.func,
295
265
  performanceYear: PropTypes.number,
296
266
  };
267
+
268
+ export default ScoreChart;
@@ -1,7 +1,6 @@
1
1
  /* global expect */
2
2
  import React from 'react';
3
- import { mount } from 'enzyme';
4
- import { shallowToJson } from 'enzyme-to-json';
3
+ import { render } from '@testing-library/react';
5
4
  import ScoreChart from '../ScoreChart';
6
5
 
7
6
  const CHART_DATA = {
@@ -15,17 +14,9 @@ const CHART_DATA = {
15
14
  };
16
15
 
17
16
  describe('ScoreChart component', () => {
18
- const wrapper = mount(<ScoreChart chartData={CHART_DATA} />);
19
-
20
17
  it('should match snapshot', () => {
21
- const tree = shallowToJson(wrapper);
22
-
23
- expect(tree).toMatchSnapshot();
24
- });
25
-
26
- it.skip('should render svg', () => {
27
- const target = wrapper.find('svg');
18
+ const { container } = render(<ScoreChart chartData={CHART_DATA} />);
28
19
 
29
- expect(target).toHaveLength(1);
20
+ expect(container).toMatchSnapshot();
30
21
  });
31
22
  });