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
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">47.19% </span>
26
+ <span class="strong">68.6% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>42/89</span>
28
+ <span class='fraction'>59/86</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">21.43% </span>
33
+ <span class="strong">47.22% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>9/42</span>
35
+ <span class='fraction'>17/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">41.67% </span>
40
+ <span class="strong">59.09% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>10/24</span>
42
+ <span class='fraction'>13/22</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">47.19% </span>
47
+ <span class="strong">68.6% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>42/89</span>
49
+ <span class='fraction'>59/86</span>
50
50
  </div>
51
51
 
52
52
 
@@ -54,8 +54,14 @@
54
54
  <p class="quiet">
55
55
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
56
  </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
57
63
  </div>
58
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
59
65
  <pre><table class="coverage">
60
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -325,62 +331,8 @@
325
331
  <a name='L266'></a><a href='#L266'>266</a>
326
332
  <a name='L267'></a><a href='#L267'>267</a>
327
333
  <a name='L268'></a><a href='#L268'>268</a>
328
- <a name='L269'></a><a href='#L269'>269</a>
329
- <a name='L270'></a><a href='#L270'>270</a>
330
- <a name='L271'></a><a href='#L271'>271</a>
331
- <a name='L272'></a><a href='#L272'>272</a>
332
- <a name='L273'></a><a href='#L273'>273</a>
333
- <a name='L274'></a><a href='#L274'>274</a>
334
- <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a>
336
- <a name='L277'></a><a href='#L277'>277</a>
337
- <a name='L278'></a><a href='#L278'>278</a>
338
- <a name='L279'></a><a href='#L279'>279</a>
339
- <a name='L280'></a><a href='#L280'>280</a>
340
- <a name='L281'></a><a href='#L281'>281</a>
341
- <a name='L282'></a><a href='#L282'>282</a>
342
- <a name='L283'></a><a href='#L283'>283</a>
343
- <a name='L284'></a><a href='#L284'>284</a>
344
- <a name='L285'></a><a href='#L285'>285</a>
345
- <a name='L286'></a><a href='#L286'>286</a>
346
- <a name='L287'></a><a href='#L287'>287</a>
347
- <a name='L288'></a><a href='#L288'>288</a>
348
- <a name='L289'></a><a href='#L289'>289</a>
349
- <a name='L290'></a><a href='#L290'>290</a>
350
- <a name='L291'></a><a href='#L291'>291</a>
351
- <a name='L292'></a><a href='#L292'>292</a>
352
- <a name='L293'></a><a href='#L293'>293</a>
353
- <a name='L294'></a><a href='#L294'>294</a>
354
- <a name='L295'></a><a href='#L295'>295</a>
355
- <a name='L296'></a><a href='#L296'>296</a>
356
- <a name='L297'></a><a href='#L297'>297</a>
357
- <a name='L298'></a><a href='#L298'>298</a>
358
- <a name='L299'></a><a href='#L299'>299</a>
359
- <a name='L300'></a><a href='#L300'>300</a>
360
- <a name='L301'></a><a href='#L301'>301</a>
361
- <a name='L302'></a><a href='#L302'>302</a>
362
- <a name='L303'></a><a href='#L303'>303</a>
363
- <a name='L304'></a><a href='#L304'>304</a>
364
- <a name='L305'></a><a href='#L305'>305</a>
365
- <a name='L306'></a><a href='#L306'>306</a>
366
- <a name='L307'></a><a href='#L307'>307</a>
367
- <a name='L308'></a><a href='#L308'>308</a>
368
- <a name='L309'></a><a href='#L309'>309</a>
369
- <a name='L310'></a><a href='#L310'>310</a>
370
- <a name='L311'></a><a href='#L311'>311</a>
371
- <a name='L312'></a><a href='#L312'>312</a>
372
- <a name='L313'></a><a href='#L313'>313</a>
373
- <a name='L314'></a><a href='#L314'>314</a>
374
- <a name='L315'></a><a href='#L315'>315</a>
375
- <a name='L316'></a><a href='#L316'>316</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <a name='L269'></a><a href='#L269'>269</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
379
335
  <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-yes">2x</span>
381
- <span class="cline-any cline-yes">2x</span>
382
- <span class="cline-any cline-yes">2x</span>
383
- <span class="cline-any cline-yes">2x</span>
384
336
  <span class="cline-any cline-neutral">&nbsp;</span>
385
337
  <span class="cline-any cline-neutral">&nbsp;</span>
386
338
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -388,45 +340,28 @@
388
340
  <span class="cline-any cline-yes">1x</span>
389
341
  <span class="cline-any cline-yes">1x</span>
390
342
  <span class="cline-any cline-yes">1x</span>
391
- <span class="cline-any cline-yes">1x</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-neutral">&nbsp;</span>
403
343
  <span class="cline-any cline-neutral">&nbsp;</span>
404
344
  <span class="cline-any cline-yes">1x</span>
405
345
  <span class="cline-any cline-yes">1x</span>
406
346
  <span class="cline-any cline-yes">1x</span>
407
- <span class="cline-any cline-yes">1x</span>
408
347
  <span class="cline-any cline-neutral">&nbsp;</span>
409
348
  <span class="cline-any cline-neutral">&nbsp;</span>
410
349
  <span class="cline-any cline-neutral">&nbsp;</span>
411
350
  <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-no">&nbsp;</span>
414
- <span class="cline-any cline-no">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
351
  <span class="cline-any cline-neutral">&nbsp;</span>
417
352
  <span class="cline-any cline-neutral">&nbsp;</span>
418
353
  <span class="cline-any cline-neutral">&nbsp;</span>
419
354
  <span class="cline-any cline-yes">1x</span>
420
- <span class="cline-any cline-no">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-no">&nbsp;</span>
424
355
  <span class="cline-any cline-neutral">&nbsp;</span>
425
356
  <span class="cline-any cline-neutral">&nbsp;</span>
426
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-yes">1x</span>
359
+ <span class="cline-any cline-yes">1x</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
427
361
  <span class="cline-any cline-neutral">&nbsp;</span>
428
362
  <span class="cline-any cline-neutral">&nbsp;</span>
429
363
  <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-yes">1x</span>
430
365
  <span class="cline-any cline-no">&nbsp;</span>
431
366
  <span class="cline-any cline-no">&nbsp;</span>
432
367
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -447,7 +382,7 @@
447
382
  <span class="cline-any cline-neutral">&nbsp;</span>
448
383
  <span class="cline-any cline-neutral">&nbsp;</span>
449
384
  <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-yes">1x</span>
451
386
  <span class="cline-any cline-yes">1x</span>
452
387
  <span class="cline-any cline-neutral">&nbsp;</span>
453
388
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -466,8 +401,6 @@
466
401
  <span class="cline-any cline-neutral">&nbsp;</span>
467
402
  <span class="cline-any cline-yes">1x</span>
468
403
  <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
404
  <span class="cline-any cline-yes">1x</span>
472
405
  <span class="cline-any cline-neutral">&nbsp;</span>
473
406
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -495,13 +428,12 @@
495
428
  <span class="cline-any cline-neutral">&nbsp;</span>
496
429
  <span class="cline-any cline-yes">1x</span>
497
430
  <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
431
  <span class="cline-any cline-yes">1x</span>
501
432
  <span class="cline-any cline-neutral">&nbsp;</span>
502
433
  <span class="cline-any cline-neutral">&nbsp;</span>
503
434
  <span class="cline-any cline-neutral">&nbsp;</span>
504
435
  <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
437
  <span class="cline-any cline-yes">1x</span>
506
438
  <span class="cline-any cline-neutral">&nbsp;</span>
507
439
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -512,28 +444,28 @@
512
444
  <span class="cline-any cline-neutral">&nbsp;</span>
513
445
  <span class="cline-any cline-neutral">&nbsp;</span>
514
446
  <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
447
+ <span class="cline-any cline-yes">9x</span>
448
+ <span class="cline-any cline-yes">3x</span>
449
+ <span class="cline-any cline-yes">6x</span>
450
+ <span class="cline-any cline-yes">3x</span>
519
451
  <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
452
+ <span class="cline-any cline-yes">3x</span>
521
453
  <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-yes">9x</span>
523
455
  <span class="cline-any cline-neutral">&nbsp;</span>
524
456
  <span class="cline-any cline-neutral">&nbsp;</span>
525
457
  <span class="cline-any cline-neutral">&nbsp;</span>
526
458
  <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-yes">9x</span>
460
+ <span class="cline-any cline-yes">9x</span>
461
+ <span class="cline-any cline-yes">3x</span>
530
462
  <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
463
+ <span class="cline-any cline-yes">9x</span>
532
464
  <span class="cline-any cline-neutral">&nbsp;</span>
533
465
  <span class="cline-any cline-neutral">&nbsp;</span>
534
466
  <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
467
+ <span class="cline-any cline-yes">9x</span>
468
+ <span class="cline-any cline-yes">3x</span>
537
469
  <span class="cline-any cline-neutral">&nbsp;</span>
538
470
  <span class="cline-any cline-neutral">&nbsp;</span>
539
471
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -552,11 +484,9 @@
552
484
  <span class="cline-any cline-neutral">&nbsp;</span>
553
485
  <span class="cline-any cline-neutral">&nbsp;</span>
554
486
  <span class="cline-any cline-yes">1x</span>
555
- <span class="cline-any cline-no">&nbsp;</span>
556
- <span class="cline-any cline-no">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
487
+ <span class="cline-any cline-yes">9x</span>
488
+ <span class="cline-any cline-yes">3x</span>
489
+ <span class="cline-any cline-yes">3x</span>
560
490
  <span class="cline-any cline-neutral">&nbsp;</span>
561
491
  <span class="cline-any cline-neutral">&nbsp;</span>
562
492
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -564,12 +494,9 @@
564
494
  <span class="cline-any cline-neutral">&nbsp;</span>
565
495
  <span class="cline-any cline-neutral">&nbsp;</span>
566
496
  <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
497
  <span class="cline-any cline-neutral">&nbsp;</span>
570
498
  <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-no">&nbsp;</span>
573
500
  <span class="cline-any cline-neutral">&nbsp;</span>
574
501
  <span class="cline-any cline-neutral">&nbsp;</span>
575
502
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -597,6 +524,7 @@
597
524
  <span class="cline-any cline-neutral">&nbsp;</span>
598
525
  <span class="cline-any cline-neutral">&nbsp;</span>
599
526
  <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
528
  <span class="cline-any cline-yes">1x</span>
601
529
  <span class="cline-any cline-neutral">&nbsp;</span>
602
530
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -604,10 +532,13 @@
604
532
  <span class="cline-any cline-neutral">&nbsp;</span>
605
533
  <span class="cline-any cline-neutral">&nbsp;</span>
606
534
  <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-yes">1x</span>
607
536
  <span class="cline-any cline-no">&nbsp;</span>
608
537
  <span class="cline-any cline-neutral">&nbsp;</span>
609
538
  <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-yes">1x</span>
540
+ <span class="cline-any cline-yes">1x</span>
541
+ <span class="cline-any cline-yes">1x</span>
611
542
  <span class="cline-any cline-yes">1x</span>
612
543
  <span class="cline-any cline-neutral">&nbsp;</span>
613
544
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -626,11 +557,8 @@
626
557
  <span class="cline-any cline-neutral">&nbsp;</span>
627
558
  <span class="cline-any cline-neutral">&nbsp;</span>
628
559
  <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
560
  <span class="cline-any cline-no">&nbsp;</span>
631
561
  <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
562
  <span class="cline-any cline-no">&nbsp;</span>
635
563
  <span class="cline-any cline-neutral">&nbsp;</span>
636
564
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -642,11 +570,6 @@
642
570
  <span class="cline-any cline-neutral">&nbsp;</span>
643
571
  <span class="cline-any cline-neutral">&nbsp;</span>
644
572
  <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
573
  <span class="cline-any cline-yes">1x</span>
651
574
  <span class="cline-any cline-neutral">&nbsp;</span>
652
575
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -657,10 +580,6 @@
657
580
  <span class="cline-any cline-neutral">&nbsp;</span>
658
581
  <span class="cline-any cline-neutral">&nbsp;</span>
659
582
  <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
583
  <span class="cline-any cline-yes">1x</span>
665
584
  <span class="cline-any cline-neutral">&nbsp;</span>
666
585
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -673,21 +592,14 @@
673
592
  <span class="cline-any cline-neutral">&nbsp;</span>
674
593
  <span class="cline-any cline-neutral">&nbsp;</span>
675
594
  <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-yes">1x</span>
676
596
  <span class="cline-any cline-neutral">&nbsp;</span>
677
597
  <span class="cline-any cline-neutral">&nbsp;</span>
678
598
  <span class="cline-any cline-neutral">&nbsp;</span>
679
599
  <span class="cline-any cline-neutral">&nbsp;</span>
680
600
  <span class="cline-any cline-neutral">&nbsp;</span>
681
601
  <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-yes">2x</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { Component } from 'react';
602
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useState, useEffect } from 'react';
691
603
  import { pie, arc } from 'd3-shape';
692
604
  import { select, event } from 'd3-selection';
693
605
  import PropTypes from 'prop-types';
@@ -697,321 +609,273 @@ const HEIGHT = 210;
697
609
  const RADIUS = Math.min(WIDTH, HEIGHT) / 2;
698
610
  const GAP_VALUE = 2.5;
699
611
  &nbsp;
700
- export default class ScoreChart extends Component {
701
- constructor(props) {
702
- super(props);
703
- this.draw = this.draw.bind(this);
704
- this.toggleLegend = this.toggleLegend.bind(this);
705
- this.getAdvancingCareLabel = this.getAdvancingCareLabel.bind(this);
706
- this.state = {
707
- legend: false,
708
- titleMapping: {
709
- quality: 'Quality Measures',
710
- aci: 'Advancing Care Info',
711
- pi: 'Promoting Interoperability',
712
- ia: 'Improvement Activities',
713
- cost: 'Cost'
714
- }
715
- };
716
- }
612
+ const ScoreChart = ({ performanceYear, chartData, linkCallback }) =&gt; {
613
+ const [hasLegend, setHasLegend] = useState(false);
614
+ const [titleMapping, setTitleMapping] = useState({
615
+ quality: 'Quality Measures',
616
+ aci: 'Advancing Care Info',
617
+ pi: 'Promoting Interoperability',
618
+ ia: 'Improvement Activities',
619
+ cost: 'Cost',
620
+ });
717
621
  &nbsp;
718
- componentDidMount() {
719
- const { chartData } = this.props;
720
- <span class="missing-if-branch" title="else path not taken" >E</span>if (chartData &amp;&amp; chartData.finalScore) {
721
- this.draw(chartData);
722
- this.getAdvancingCareLabel();
723
- }
622
+ const { categories } = chartData;
623
+ let legendToggler;
624
+ let legend;
625
+ &nbsp;
626
+ const getAdvancingCareLabel = () =&gt; {
627
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (performanceYear &gt; 2017) {
628
+ <span class="cstat-no" title="statement not covered" > setTitleMapping({ ...titleMapping, aci: 'Promoting Interoperability' });</span>
724
629
  }
630
+ };
725
631
  &nbsp;
726
- <span class="fstat-no" title="function not covered" > UN</span>SAFE_componentWillReceiveProps({ chartData }) {
727
- <span class="cstat-no" title="statement not covered" > if (chartData &amp;&amp; chartData.finalScore) {</span>
728
- <span class="cstat-no" title="statement not covered" > this.draw(chartData);</span>
729
- <span class="cstat-no" title="statement not covered" > this.getAdvancingCareLabel();</span>
730
- }
632
+ const redirectToCategory = <span class="fstat-no" title="function not covered" >(l</span>ink, categoryId) =&gt; {
633
+ <span class="cstat-no" title="statement not covered" > if (!link) {</span>
634
+ <span class="cstat-no" title="statement not covered" > return;</span>
731
635
  }
732
636
  &nbsp;
733
- getAdvancingCareLabel() {
734
- <span class="missing-if-branch" title="if path not taken" >I</span>if (this.props.performanceYear &gt; 2017) {
735
- const newState = <span class="cstat-no" title="statement not covered" >Object.assign({}, this.state.titleMapping);</span>
736
- <span class="cstat-no" title="statement not covered" > newState.aci = 'Promoting Interoperability';</span>
637
+ // track explicitly chart legends
638
+ <span class="cstat-no" title="statement not covered" > if (window.utag) {</span>
639
+ <span class="cstat-no" title="statement not covered" > window.utag.track('link', {</span>
640
+ ga_event_category: 'SidebarNav',
641
+ ga_event_action: `GoTo${categoryId}`,
642
+ ga_event_label: categoryId,
643
+ });
644
+ }
737
645
  &nbsp;
738
- <span class="cstat-no" title="statement not covered" > this.setState({</span>
739
- titleMapping: newState
740
- });
741
- }
646
+ <span class="cstat-no" title="statement not covered" > if (linkCallback) {</span>
647
+ <span class="cstat-no" title="statement not covered" > linkCallback(link);</span>
648
+ } else {
649
+ <span class="cstat-no" title="statement not covered" > window.location.href = link;</span>
742
650
  }
651
+ };
743
652
  &nbsp;
744
- <span class="fstat-no" title="function not covered" > re</span>directToCategory(link, categoryId) {
745
- <span class="cstat-no" title="statement not covered" > if (!link) {</span>
746
- <span class="cstat-no" title="statement not covered" > return;</span>
747
- }
653
+ const draw = (chartData) =&gt; {
654
+ const scorePie = pie().sort(null);
748
655
  &nbsp;
749
- // track explicitly chart legends
750
- <span class="cstat-no" title="statement not covered" > if (window.utag) {</span>
751
- <span class="cstat-no" title="statement not covered" > window.utag.track('link', {</span>
752
- ga_event_category: 'SidebarNav',
753
- ga_event_action: `GoTo${categoryId}`,
754
- ga_event_label: categoryId
755
- });
756
- }
656
+ // Removing invalid categories
657
+ const categories = chartData.categories.filter(
658
+ ({ maxContribution }) =&gt; !!maxContribution
659
+ );
757
660
  &nbsp;
758
- <span class="cstat-no" title="statement not covered" > if (this.props.linkCallback) {</span>
759
- <span class="cstat-no" title="statement not covered" > this.props.linkCallback(link);</span>
760
- } else {
761
- <span class="cstat-no" title="statement not covered" > window.location.href = link;</span>
762
- }
763
- }
661
+ // Calculating the sum of valid categories in order to calculate ratios
662
+ const categorySum = categories
663
+ .map(({ maxContribution }) =&gt; maxContribution)
664
+ .reduce((sum, current) =&gt; sum + current);
764
665
  &nbsp;
765
- draw(chartData) {
766
- const scorePie = pie().sort(null);
666
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!categorySum) {
667
+ <span class="cstat-no" title="statement not covered" > return;</span>
668
+ }
767
669
  &nbsp;
768
- // Removing invalid categories
769
- const categories = chartData.categories.filter(
770
- ({ maxContribution }) =&gt; !!maxContribution
771
- );
670
+ select('.score-chart').selectAll('*').remove();
772
671
  &nbsp;
773
- // Calculating the sum of valid categories in order to calculate ratios
774
- const categorySum = categories
775
- .map(({ maxContribution }) =&gt; maxContribution)
776
- .reduce((sum, current) =&gt; sum + current);
672
+ const svg = select('.score-chart')
673
+ .attr('width', WIDTH)
674
+ .attr('height', HEIGHT);
777
675
  &nbsp;
778
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!categorySum) {
779
- <span class="cstat-no" title="statement not covered" > return;</span>
780
- }
676
+ const chartArc = arc()
677
+ .innerRadius(RADIUS - 1.5)
678
+ .outerRadius(RADIUS - 25);
781
679
  &nbsp;
782
- select('.score-chart')
783
- .selectAll('*')
784
- .remove();
680
+ // Preparing the data structure with ratios: [ FILLED, EMPTY, TRANSPARENT, FILLED, EMPTY, ... ]
681
+ let data;
682
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (categories.length === 0) {
683
+ <span class="cstat-no" title="statement not covered" > data = [];</span>
684
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (categories.length === 1) {
685
+ const { value, maxContribution } = <span class="cstat-no" title="statement not covered" >categories[0];</span>
686
+ <span class="cstat-no" title="statement not covered" > data = [value || 0, maxContribution - value];</span>
687
+ } else {
688
+ data = categories
689
+ .map(({ value, maxContribution }) =&gt; [
690
+ value || <span class="branch-1 cbranch-no" title="branch not covered" >0,</span>
691
+ maxContribution - value,
692
+ GAP_VALUE * (categorySum / 100),
693
+ ])
694
+ .reduce((a, b) =&gt; a.concat(b), []);
695
+ }
785
696
  &nbsp;
786
- const svg = select('.score-chart')
787
- .attr('width', WIDTH)
788
- .attr('height', HEIGHT);
697
+ svg.append('title').attr('id', 'titleID').text('Your submission score');
789
698
  &nbsp;
790
- const chartArc = arc()
791
- .innerRadius(RADIUS - 1.5)
792
- .outerRadius(RADIUS - 25);
699
+ svg
700
+ .append('desc')
701
+ .attr('id', 'descID')
702
+ .text(`${chartData.finalScore} out of 100`);
793
703
  &nbsp;
794
- // Preparing the data structure with ratios: [ FILLED, EMPTY, TRANSPARENT, FILLED, EMPTY, ... ]
795
- let data;
796
- <span class="missing-if-branch" title="if path not taken" >I</span>if (categories.length === 0) {
797
- <span class="cstat-no" title="statement not covered" > data = [];</span>
798
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (categories.length === 1) {
799
- const { value, maxContribution } = <span class="cstat-no" title="statement not covered" >categories[0];</span>
800
- <span class="cstat-no" title="statement not covered" > data = [value || 0, maxContribution - value];</span>
704
+ // Setting up the arcs
705
+ let arcs = svg
706
+ .append('g')
707
+ .attr('class', 'arcs')
708
+ .attr('role', 'presentation')
709
+ .selectAll('g.arc')
710
+ .data(scorePie(data))
711
+ .enter()
712
+ .append('g')
713
+ .attr('class', (d, i) =&gt; {
714
+ let role;
715
+ if (i % 3 === 0) {
716
+ role = 'filled';
717
+ } else if (i % 3 === 1) {
718
+ role = 'empty';
801
719
  } else {
802
- data = categories
803
- .map(({ value, maxContribution }) =&gt; [
804
- value || <span class="branch-1 cbranch-no" title="branch not covered" >0,</span>
805
- maxContribution - value,
806
- GAP_VALUE * (categorySum / 100)
807
- ])
808
- .reduce((a, b) =&gt; a.concat(b), []);
720
+ role = 'transparent';
809
721
  }
722
+ return `arc ${categories[parseInt(i / 3)].name} ${role}`;
723
+ })
724
+ .attr('transform', `translate(${RADIUS}, ${RADIUS})`)
725
+ // For accessibility, we add keyboard access to the filled slices
726
+ .attr('tabindex', (d, i) =&gt; {
727
+ let tabindex = -1;
728
+ if (i % 3 === 0) {
729
+ tabindex = 0;
730
+ }
731
+ return tabindex;
732
+ })
733
+ // IE for for focusable svg elements
734
+ .attr('focusable', (d, i) =&gt; {
735
+ if (i % 3 === 0) {
736
+ return true;
737
+ }
738
+ })
739
+ // For accessibility, we add keyboard access to the filled slices
740
+ .on('keyup', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
741
+ const code = <span class="cstat-no" title="statement not covered" >event.keyCode || event.which;</span>
742
+ <span class="cstat-no" title="statement not covered" > if (code === 13) {</span>
743
+ const { name, link } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
744
+ <span class="cstat-no" title="statement not covered" > redirectToCategory(link, name);</span>
745
+ }
746
+ })
747
+ // On click - go to category page
748
+ .on('click', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
749
+ const { name, link } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
750
+ <span class="cstat-no" title="statement not covered" > redirectToCategory(link, name);</span>
751
+ });
810
752
  &nbsp;
811
- svg.append('title')
812
- .attr('id', 'titleID')
813
- .text('Your submission score');
814
- &nbsp;
815
- svg.append('desc')
816
- .attr('id', 'descID')
817
- .text(`${chartData.finalScore} out of 100`);
818
- &nbsp;
819
- // Setting up the arcs
820
- let arcs = svg
821
- .append('g')
822
- .attr('class', 'arcs')
823
- .attr('role', 'presentation')
824
- .selectAll('g.arc')
825
- .data(scorePie(data))
826
- .enter()
827
- .append('g')
828
- .attr('class', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
829
- let role;
830
- <span class="cstat-no" title="statement not covered" > if (i % 3 === 0) {</span>
831
- <span class="cstat-no" title="statement not covered" > role = 'filled';</span>
832
- } else <span class="cstat-no" title="statement not covered" >if (i % 3 === 1) {</span>
833
- <span class="cstat-no" title="statement not covered" > role = 'empty';</span>
834
- } else {
835
- <span class="cstat-no" title="statement not covered" > role = 'transparent';</span>
836
- }
837
- <span class="cstat-no" title="statement not covered" > return `arc ${categories[parseInt(i / 3)].name} ${role}`;</span>
838
- })
839
- .attr('transform', `translate(${RADIUS}, ${RADIUS})`)
840
- // For accessibility, we add keyboard access to the filled slices
841
- .attr('tabindex', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
842
- let tabindex = <span class="cstat-no" title="statement not covered" >-1;</span>
843
- <span class="cstat-no" title="statement not covered" > if (i % 3 === 0) {</span>
844
- <span class="cstat-no" title="statement not covered" > tabindex = 0;</span>
845
- }
846
- <span class="cstat-no" title="statement not covered" > return tabindex;</span>
847
- })
848
- // IE for for focusable svg elements
849
- .attr('focusable', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
850
- <span class="cstat-no" title="statement not covered" > if (i % 3 === 0) {</span>
851
- <span class="cstat-no" title="statement not covered" > return true;</span>
852
- }
853
- })
854
- // For accessibility, we add keyboard access to the filled slices
855
- .on('keyup', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
856
- const code = <span class="cstat-no" title="statement not covered" >event.keyCode || event.which;</span>
857
- <span class="cstat-no" title="statement not covered" > if (code === 13) {</span>
858
- const { name, link } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
859
- <span class="cstat-no" title="statement not covered" > this.redirectToCategory(link, name);</span>
860
- }
861
- })
862
- // On click - go to category page
863
- .on('click', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
864
- const { name, link } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
865
- <span class="cstat-no" title="statement not covered" > this.redirectToCategory(link, name);</span>
866
- });
753
+ // Add accessibility description
754
+ arcs.append('desc').text((d, i) =&gt; {
755
+ if (i % 3 === 0) {
756
+ const { name, value, maxContribution } = categories[parseInt(i / 3)];
757
+ return `${titleMapping[name]} ${value} out of ${maxContribution}`;
758
+ }
759
+ });
867
760
  &nbsp;
868
- // Add accessibility description
869
- arcs.append('desc').text(<span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
870
- <span class="cstat-no" title="statement not covered" > if (i % 3 === 0) {</span>
871
- const { name, value, maxContribution } = <span class="cstat-no" title="statement not covered" >categories[</span>
872
- parseInt(i / 3)
873
- ];
874
- <span class="cstat-no" title="statement not covered" > return `${this.state.titleMapping[name]} ${value} out of ${maxContribution}`;</span>
875
- }
876
- });
761
+ arcs
762
+ .append('path')
763
+ .attr('d', chartArc)
764
+ // On mouse over - show category tooltip
765
+ .on('mouseover', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
766
+ const { name, value, maxContribution } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
767
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
768
+ .style('opacity', 1)
769
+ .text(`${titleMapping[name]} ${value}/${maxContribution}`);
770
+ })
771
+ // On mouse move - move category tooltip
772
+ .on('mousemove', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
773
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
774
+ .style('top', event.clientY - HEIGHT + 10 + 'px')
775
+ .style('left', event.clientX + 'px');
776
+ })
777
+ // On mouse out - hide category tooltip
778
+ .on('mouseout', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
779
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip').style('opacity', 0);</span>
780
+ });
877
781
  &nbsp;
878
- arcs.append('path')
879
- .attr('d', chartArc)
880
- // On mouse over - show category tooltip
881
- .on('mouseover', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
882
- const { name, value, maxContribution } = <span class="cstat-no" title="statement not covered" >categories[</span>
883
- parseInt(i / 3)
884
- ];
885
- <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
886
- .style('opacity', 1)
887
- .text(
888
- `${this.state.titleMapping[name]} ${value}/${maxContribution}`
889
- );
890
- })
891
- // On mouse move - move category tooltip
892
- .on('mousemove', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
893
- <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
894
- .style('top', event.clientY - HEIGHT + 10 + 'px')
895
- .style('left', event.clientX + 'px');
896
- })
897
- // On mouse out - hide category tooltip
898
- .on('mouseout', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
899
- <span class="cstat-no" title="statement not covered" > select('.chart-tooltip').style('opacity', 0);</span>
900
- });
782
+ // Adding title and subtitle
783
+ const text = svg
784
+ .append('g')
785
+ .attr('text-anchor', 'middle')
786
+ .attr('transform', `translate(${WIDTH / 2}, ${HEIGHT / 2})`);
901
787
  &nbsp;
902
- // Adding title and subtitle
903
- const text = svg
904
- .append('g')
905
- .attr('text-anchor', 'middle')
906
- .attr('transform', `translate(${WIDTH / 2}, ${HEIGHT / 2})`);
788
+ // Adding title - X%
789
+ text
790
+ .append('text')
791
+ .attr('y', 4)
792
+ .attr('class', 'chart-title')
793
+ .text(chartData.finalScore);
907
794
  &nbsp;
908
- // Adding title - X%
909
- text.append('text')
910
- .attr('y', 4)
911
- .attr('class', 'chart-title')
912
- .text(chartData.finalScore);
795
+ // Adding subtitle - OUT OF 100
796
+ text
797
+ .append('text')
798
+ .attr('y', 24)
799
+ .attr('class', 'chart-subtitle')
800
+ .text('OUT OF 100');
801
+ };
913
802
  &nbsp;
914
- // Adding subtitle - OUT OF 100
915
- text.append('text')
916
- .attr('y', 24)
917
- .attr('class', 'chart-subtitle')
918
- .text('OUT OF 100');
919
- }
803
+ const toggleLegend = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
804
+ <span class="cstat-no" title="statement not covered" > setHasLegend(!hasLegend);</span>
805
+ };
920
806
  &nbsp;
921
- <span class="fstat-no" title="function not covered" > to</span>ggleLegend() {
922
- <span class="cstat-no" title="statement not covered" > this.setState({ legend: !this.state.legend });</span>
807
+ useEffect(() =&gt; {
808
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (chartData?.finalScore) {
809
+ draw(chartData);
810
+ getAdvancingCareLabel();
923
811
  }
812
+ }, [chartData?.finalScore]);
924
813
  &nbsp;
925
- render() {
926
- const { categories } = this.props.chartData;
927
- let legendToggler;
928
- let legend;
814
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hasLegend) {
815
+ <span class="cstat-no" title="statement not covered" > legendToggler = (</span>
816
+ &lt;button className="open" type="button" aria-pressed="true"&gt;
817
+ Hide Legend
818
+ &lt;svg
819
+ className="right-icon rotated"
820
+ aria-hidden="true"
821
+ focusable="false"
822
+ &gt;
823
+ &lt;use xlinkHref="#chevron-down" /&gt;
824
+ &lt;/svg&gt;
825
+ &lt;/button&gt;
826
+ );
827
+ <span class="cstat-no" title="statement not covered" > legend = categories.map(<span class="fstat-no" title="function not covered" >({</span> name, value, maxContribution, link }, index) =&gt; {</span>
828
+ <span class="cstat-no" title="statement not covered" > return (</span>
829
+ &lt;li key={name} className="legend-axis"&gt;
830
+ &lt;button onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >redirectToCategory(link, name)}</span>&gt;
831
+ &lt;span className={`legend-axis-color ${name}`} /&gt;
832
+ &amp;nbsp;
833
+ &lt;span className="legend-axis-title"&gt;{titleMapping[name]}&lt;/span&gt;
834
+ &amp;nbsp;
835
+ &lt;span className="legend-axis-value"&gt;{`${value}/${maxContribution}`}&lt;/span&gt;
836
+ &lt;/button&gt;
837
+ &lt;/li&gt;
838
+ );
839
+ });
840
+ } else {
841
+ legendToggler = (
842
+ &lt;button type="button" aria-pressed="false"&gt;
843
+ Show Legend
844
+ &lt;svg className="right-icon" aria-hidden="true" focusable="false"&gt;
845
+ &lt;use xlinkHref="#chevron-down" /&gt;
846
+ &lt;/svg&gt;
847
+ &lt;/button&gt;
848
+ );
849
+ }
929
850
  &nbsp;
930
- <span class="missing-if-branch" title="if path not taken" >I</span>if (this.state.legend) {
931
- <span class="cstat-no" title="statement not covered" > legendToggler = (</span>
932
- &lt;button className="open" type="button" aria-pressed="true"&gt;
933
- Hide Legend
934
- &lt;svg
935
- className="right-icon rotated"
936
- aria-hidden="true"
937
- focusable="false"
938
- &gt;
939
- &lt;use xlinkHref="#chevron-down" /&gt;
940
- &lt;/svg&gt;
941
- &lt;/button&gt;
942
- );
943
- <span class="cstat-no" title="statement not covered" > legend = categories.map(</span>
944
- <span class="fstat-no" title="function not covered" > ({</span> name, value, maxContribution, link }, index) =&gt; {
945
- <span class="cstat-no" title="statement not covered" > return (</span>
946
- &lt;li key={name} className="legend-axis"&gt;
947
- &lt;button
948
- onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt;
949
- <span class="cstat-no" title="statement not covered" > this.redirectToCategory(link, name)</span>
950
- }
951
- &gt;
952
- &lt;span className={`legend-axis-color ${name}`} /&gt;
953
- &amp;nbsp;
954
- &lt;span className="legend-axis-title"&gt;
955
- {this.state.titleMapping[name]}
956
- &lt;/span&gt;
957
- &amp;nbsp;
958
- &lt;span className="legend-axis-value"&gt;{`${value}/${maxContribution}`}&lt;/span&gt;
959
- &lt;/button&gt;
960
- &lt;/li&gt;
961
- );
962
- }
963
- );
964
- } else {
965
- legendToggler = (
966
- &lt;button type="button" aria-pressed="false"&gt;
967
- Show Legend
968
- &lt;svg
969
- className="right-icon"
970
- aria-hidden="true"
971
- focusable="false"
972
- &gt;
973
- &lt;use xlinkHref="#chevron-down" /&gt;
974
- &lt;/svg&gt;
975
- &lt;/button&gt;
976
- );
977
- }
978
- &nbsp;
979
- return (
980
- &lt;div className="chart"&gt;
981
- &lt;svg
982
- className="score-chart"
983
- role="img"
984
- aria-labelledby="titleID descID"
985
- focusable="false"
986
- /&gt;
987
- &lt;div className="chart-tooltip off" /&gt;
988
- &lt;div
989
- className="chart-legend-toggler"
990
- onClick={this.toggleLegend}
991
- &gt;
992
- {legendToggler}
993
- &lt;/div&gt;
994
- &lt;ul className="chart-legend"&gt;{legend}&lt;/ul&gt;
995
- &lt;/div&gt;
996
- );
997
- }
998
- }
851
+ return (
852
+ &lt;div className="chart"&gt;
853
+ &lt;svg className="score-chart" focusable="false" /&gt;
854
+ &lt;div className="chart-tooltip off" /&gt;
855
+ &lt;div className="chart-legend-toggler" onClick={toggleLegend}&gt;
856
+ {legendToggler}
857
+ &lt;/div&gt;
858
+ &lt;ul className="chart-legend"&gt;{legend}&lt;/ul&gt;
859
+ &lt;/div&gt;
860
+ );
861
+ };
999
862
  &nbsp;
1000
863
  ScoreChart.propTypes = {
1001
- chartData: PropTypes.object,
1002
- linkCallback: PropTypes.func,
1003
- performanceYear: PropTypes.number
864
+ chartData: PropTypes.object,
865
+ linkCallback: PropTypes.func,
866
+ performanceYear: PropTypes.number,
1004
867
  };
868
+ &nbsp;
869
+ export default ScoreChart;
1005
870
  &nbsp;</pre></td></tr></table></pre>
1006
871
 
1007
872
  <div class='push'></div><!-- for sticky footer -->
1008
873
  </div><!-- /wrapper -->
1009
874
  <div class='footer quiet pad2 space-top1 center small'>
1010
875
  Code coverage generated by
1011
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1012
- at Tue Aug 04 2020 16:59:07 GMT-0700 (Pacific Daylight Time)
876
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
877
+ at Sun Sep 11 2022 11:18:36 GMT-0700 (Pacific Daylight Time)
1013
878
  </div>
1014
- </div>
1015
879
  <script src="../../../prettify.js"></script>
1016
880
  <script>
1017
881
  window.onload = function () {