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>
@@ -327,52 +333,7 @@
327
333
  <a name='L268'></a><a href='#L268'>268</a>
328
334
  <a name='L269'></a><a href='#L269'>269</a>
329
335
  <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>
336
+ <a name='L271'></a><a href='#L271'>271</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
376
337
  <span class="cline-any cline-neutral">&nbsp;</span>
377
338
  <span class="cline-any cline-neutral">&nbsp;</span>
378
339
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -382,11 +343,7 @@
382
343
  <span class="cline-any cline-yes">3x</span>
383
344
  <span class="cline-any cline-yes">3x</span>
384
345
  <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-yes">1x</span>
388
- <span class="cline-any cline-yes">1x</span>
389
- <span class="cline-any cline-yes">1x</span>
346
+ <span class="cline-any cline-yes">3x</span>
390
347
  <span class="cline-any cline-yes">1x</span>
391
348
  <span class="cline-any cline-yes">1x</span>
392
349
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -396,23 +353,13 @@
396
353
  <span class="cline-any cline-neutral">&nbsp;</span>
397
354
  <span class="cline-any cline-neutral">&nbsp;</span>
398
355
  <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-yes">1x</span>
399
357
  <span class="cline-any cline-neutral">&nbsp;</span>
400
358
  <span class="cline-any cline-neutral">&nbsp;</span>
401
359
  <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-yes">1x</span>
405
- <span class="cline-any cline-yes">1x</span>
406
360
  <span class="cline-any cline-yes">1x</span>
407
361
  <span class="cline-any cline-yes">1x</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
362
  <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
363
  <span class="cline-any cline-neutral">&nbsp;</span>
417
364
  <span class="cline-any cline-neutral">&nbsp;</span>
418
365
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -420,16 +367,6 @@
420
367
  <span class="cline-any cline-no">&nbsp;</span>
421
368
  <span class="cline-any cline-no">&nbsp;</span>
422
369
  <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-no">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-no">&nbsp;</span>
431
- <span class="cline-any cline-no">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
370
  <span class="cline-any cline-neutral">&nbsp;</span>
434
371
  <span class="cline-any cline-neutral">&nbsp;</span>
435
372
  <span class="cline-any cline-no">&nbsp;</span>
@@ -447,7 +384,7 @@
447
384
  <span class="cline-any cline-neutral">&nbsp;</span>
448
385
  <span class="cline-any cline-neutral">&nbsp;</span>
449
386
  <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-yes">1x</span>
451
388
  <span class="cline-any cline-yes">1x</span>
452
389
  <span class="cline-any cline-neutral">&nbsp;</span>
453
390
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -466,8 +403,6 @@
466
403
  <span class="cline-any cline-neutral">&nbsp;</span>
467
404
  <span class="cline-any cline-yes">1x</span>
468
405
  <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
406
  <span class="cline-any cline-yes">1x</span>
472
407
  <span class="cline-any cline-neutral">&nbsp;</span>
473
408
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -495,13 +430,12 @@
495
430
  <span class="cline-any cline-neutral">&nbsp;</span>
496
431
  <span class="cline-any cline-yes">1x</span>
497
432
  <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
433
  <span class="cline-any cline-yes">1x</span>
501
434
  <span class="cline-any cline-neutral">&nbsp;</span>
502
435
  <span class="cline-any cline-neutral">&nbsp;</span>
503
436
  <span class="cline-any cline-neutral">&nbsp;</span>
504
437
  <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
439
  <span class="cline-any cline-yes">1x</span>
506
440
  <span class="cline-any cline-neutral">&nbsp;</span>
507
441
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -512,28 +446,28 @@
512
446
  <span class="cline-any cline-neutral">&nbsp;</span>
513
447
  <span class="cline-any cline-neutral">&nbsp;</span>
514
448
  <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>
449
+ <span class="cline-any cline-yes">9x</span>
450
+ <span class="cline-any cline-yes">3x</span>
451
+ <span class="cline-any cline-yes">6x</span>
452
+ <span class="cline-any cline-yes">3x</span>
519
453
  <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-yes">3x</span>
521
455
  <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
456
+ <span class="cline-any cline-yes">9x</span>
523
457
  <span class="cline-any cline-neutral">&nbsp;</span>
524
458
  <span class="cline-any cline-neutral">&nbsp;</span>
525
459
  <span class="cline-any cline-neutral">&nbsp;</span>
526
460
  <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>
461
+ <span class="cline-any cline-yes">9x</span>
462
+ <span class="cline-any cline-yes">9x</span>
463
+ <span class="cline-any cline-yes">3x</span>
530
464
  <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
465
+ <span class="cline-any cline-yes">9x</span>
532
466
  <span class="cline-any cline-neutral">&nbsp;</span>
533
467
  <span class="cline-any cline-neutral">&nbsp;</span>
534
468
  <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>
469
+ <span class="cline-any cline-yes">9x</span>
470
+ <span class="cline-any cline-yes">3x</span>
537
471
  <span class="cline-any cline-neutral">&nbsp;</span>
538
472
  <span class="cline-any cline-neutral">&nbsp;</span>
539
473
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -552,11 +486,10 @@
552
486
  <span class="cline-any cline-neutral">&nbsp;</span>
553
487
  <span class="cline-any cline-neutral">&nbsp;</span>
554
488
  <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>
489
+ <span class="cline-any cline-yes">9x</span>
558
490
  <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
491
+ <span class="cline-any cline-yes">3x</span>
492
+ <span class="cline-any cline-yes">3x</span>
560
493
  <span class="cline-any cline-neutral">&nbsp;</span>
561
494
  <span class="cline-any cline-neutral">&nbsp;</span>
562
495
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -564,12 +497,10 @@
564
497
  <span class="cline-any cline-neutral">&nbsp;</span>
565
498
  <span class="cline-any cline-neutral">&nbsp;</span>
566
499
  <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
500
  <span class="cline-any cline-neutral">&nbsp;</span>
569
501
  <span class="cline-any cline-neutral">&nbsp;</span>
570
502
  <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>
503
+ <span class="cline-any cline-no">&nbsp;</span>
573
504
  <span class="cline-any cline-neutral">&nbsp;</span>
574
505
  <span class="cline-any cline-neutral">&nbsp;</span>
575
506
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -597,6 +528,7 @@
597
528
  <span class="cline-any cline-neutral">&nbsp;</span>
598
529
  <span class="cline-any cline-neutral">&nbsp;</span>
599
530
  <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
532
  <span class="cline-any cline-yes">1x</span>
601
533
  <span class="cline-any cline-neutral">&nbsp;</span>
602
534
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -604,10 +536,13 @@
604
536
  <span class="cline-any cline-neutral">&nbsp;</span>
605
537
  <span class="cline-any cline-neutral">&nbsp;</span>
606
538
  <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-yes">1x</span>
607
540
  <span class="cline-any cline-no">&nbsp;</span>
608
541
  <span class="cline-any cline-neutral">&nbsp;</span>
609
542
  <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-yes">1x</span>
544
+ <span class="cline-any cline-yes">1x</span>
545
+ <span class="cline-any cline-yes">1x</span>
611
546
  <span class="cline-any cline-yes">1x</span>
612
547
  <span class="cline-any cline-neutral">&nbsp;</span>
613
548
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -626,11 +561,8 @@
626
561
  <span class="cline-any cline-neutral">&nbsp;</span>
627
562
  <span class="cline-any cline-neutral">&nbsp;</span>
628
563
  <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
564
  <span class="cline-any cline-no">&nbsp;</span>
631
565
  <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
566
  <span class="cline-any cline-no">&nbsp;</span>
635
567
  <span class="cline-any cline-neutral">&nbsp;</span>
636
568
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -642,11 +574,6 @@
642
574
  <span class="cline-any cline-neutral">&nbsp;</span>
643
575
  <span class="cline-any cline-neutral">&nbsp;</span>
644
576
  <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
577
  <span class="cline-any cline-yes">1x</span>
651
578
  <span class="cline-any cline-neutral">&nbsp;</span>
652
579
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -657,10 +584,6 @@
657
584
  <span class="cline-any cline-neutral">&nbsp;</span>
658
585
  <span class="cline-any cline-neutral">&nbsp;</span>
659
586
  <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
587
  <span class="cline-any cline-yes">1x</span>
665
588
  <span class="cline-any cline-neutral">&nbsp;</span>
666
589
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -673,21 +596,14 @@
673
596
  <span class="cline-any cline-neutral">&nbsp;</span>
674
597
  <span class="cline-any cline-neutral">&nbsp;</span>
675
598
  <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-yes">3x</span>
676
600
  <span class="cline-any cline-neutral">&nbsp;</span>
677
601
  <span class="cline-any cline-neutral">&nbsp;</span>
678
602
  <span class="cline-any cline-neutral">&nbsp;</span>
679
603
  <span class="cline-any cline-neutral">&nbsp;</span>
680
604
  <span class="cline-any cline-neutral">&nbsp;</span>
681
605
  <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">3x</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';
606
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useState, useEffect } from 'react';
691
607
  import { pie, arc } from 'd3-shape';
692
608
  import { select, event } from 'd3-selection';
693
609
  import PropTypes from 'prop-types';
@@ -697,321 +613,275 @@ const HEIGHT = 210;
697
613
  const RADIUS = Math.min(WIDTH, HEIGHT) / 2;
698
614
  const GAP_VALUE = 2.5;
699
615
  &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
- }
616
+ const ScoreChart = ({ performanceYear, chartData, linkCallback }) =&gt; {
617
+ const [hasLegend, setHasLegend] = useState(false);
618
+ const [titleMapping, setTitleMapping] = useState({
619
+ quality: 'Quality Measures',
620
+ aci: 'Advancing Care Info',
621
+ pi: 'Promoting Interoperability',
622
+ ia: 'Improvement Activities',
623
+ cost: 'Cost',
624
+ });
717
625
  &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
- }
626
+ const { categories } = chartData;
627
+ let legendToggler;
628
+ let legend;
629
+ &nbsp;
630
+ const getAdvancingCareLabel = () =&gt; {
631
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (performanceYear &gt; 2017) {
632
+ <span class="cstat-no" title="statement not covered" > setTitleMapping({ ...titleMapping, aci: 'Promoting Interoperability' });</span>
724
633
  }
634
+ };
725
635
  &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
- }
636
+ const redirectToCategory = <span class="fstat-no" title="function not covered" >(l</span>ink, categoryId) =&gt; {
637
+ <span class="cstat-no" title="statement not covered" > if (!link) {</span>
638
+ <span class="cstat-no" title="statement not covered" > return;</span>
731
639
  }
732
640
  &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>
641
+ // track explicitly chart legends
642
+ <span class="cstat-no" title="statement not covered" > if (window.utag) {</span>
643
+ <span class="cstat-no" title="statement not covered" > window.utag.track('link', {</span>
644
+ ga_event_category: 'SidebarNav',
645
+ ga_event_action: `GoTo${categoryId}`,
646
+ ga_event_label: categoryId,
647
+ });
648
+ }
737
649
  &nbsp;
738
- <span class="cstat-no" title="statement not covered" > this.setState({</span>
739
- titleMapping: newState
740
- });
741
- }
650
+ <span class="cstat-no" title="statement not covered" > if (linkCallback) {</span>
651
+ <span class="cstat-no" title="statement not covered" > linkCallback(link);</span>
652
+ } else {
653
+ <span class="cstat-no" title="statement not covered" > window.location.href = link;</span>
742
654
  }
655
+ };
743
656
  &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
- }
657
+ const draw = (chartData) =&gt; {
658
+ const scorePie = pie().sort(null);
748
659
  &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
- }
660
+ // Removing invalid categories
661
+ const validCategories = chartData.categories.filter(
662
+ ({ maxContribution }) =&gt; !!maxContribution
663
+ );
757
664
  &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
- }
665
+ // Calculating the sum of valid categories in order to calculate ratios
666
+ const categorySum = validCategories
667
+ .map(({ maxContribution }) =&gt; maxContribution)
668
+ .reduce((sum, current) =&gt; sum + current);
764
669
  &nbsp;
765
- draw(chartData) {
766
- const scorePie = pie().sort(null);
670
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!categorySum) {
671
+ <span class="cstat-no" title="statement not covered" > return;</span>
672
+ }
767
673
  &nbsp;
768
- // Removing invalid categories
769
- const categories = chartData.categories.filter(
770
- ({ maxContribution }) =&gt; !!maxContribution
771
- );
674
+ select('.score-chart').selectAll('*').remove();
772
675
  &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);
676
+ const svg = select('.score-chart')
677
+ .attr('width', WIDTH)
678
+ .attr('height', HEIGHT);
777
679
  &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
- }
680
+ const chartArc = arc()
681
+ .innerRadius(RADIUS - 1.5)
682
+ .outerRadius(RADIUS - 25);
781
683
  &nbsp;
782
- select('.score-chart')
783
- .selectAll('*')
784
- .remove();
684
+ // Preparing the data structure with ratios: [ FILLED, EMPTY, TRANSPARENT, FILLED, EMPTY, ... ]
685
+ let data;
686
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (validCategories.length === 0) {
687
+ <span class="cstat-no" title="statement not covered" > data = [];</span>
688
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (validCategories.length === 1) {
689
+ const { value, maxContribution } = <span class="cstat-no" title="statement not covered" >validCategories[0];</span>
690
+ <span class="cstat-no" title="statement not covered" > data = [value || 0, maxContribution - value];</span>
691
+ } else {
692
+ data = validCategories
693
+ .map(({ value, maxContribution }) =&gt; [
694
+ value || <span class="branch-1 cbranch-no" title="branch not covered" >0,</span>
695
+ maxContribution - value,
696
+ GAP_VALUE * (categorySum / 100),
697
+ ])
698
+ .reduce((a, b) =&gt; a.concat(b), []);
699
+ }
785
700
  &nbsp;
786
- const svg = select('.score-chart')
787
- .attr('width', WIDTH)
788
- .attr('height', HEIGHT);
701
+ svg.append('title').attr('id', 'titleID').text('Your submission score');
789
702
  &nbsp;
790
- const chartArc = arc()
791
- .innerRadius(RADIUS - 1.5)
792
- .outerRadius(RADIUS - 25);
703
+ svg
704
+ .append('desc')
705
+ .attr('id', 'descID')
706
+ .text(`${chartData.finalScore} out of 100`);
793
707
  &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>
708
+ // Setting up the arcs
709
+ let arcs = svg
710
+ .append('g')
711
+ .attr('class', 'arcs')
712
+ .attr('role', 'presentation')
713
+ .selectAll('g.arc')
714
+ .data(scorePie(data))
715
+ .enter()
716
+ .append('g')
717
+ .attr('class', (d, i) =&gt; {
718
+ let role;
719
+ if (i % 3 === 0) {
720
+ role = 'filled';
721
+ } else if (i % 3 === 1) {
722
+ role = 'empty';
801
723
  } 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), []);
724
+ role = 'transparent';
809
725
  }
726
+ return `arc ${validCategories[parseInt(i / 3)].name} ${role}`;
727
+ })
728
+ .attr('transform', `translate(${RADIUS}, ${RADIUS})`)
729
+ // For accessibility, we add keyboard access to the filled slices
730
+ .attr('tabindex', (d, i) =&gt; {
731
+ let tabindex = -1;
732
+ if (i % 3 === 0) {
733
+ tabindex = 0;
734
+ }
735
+ return tabindex;
736
+ })
737
+ // IE for for focusable svg elements
738
+ .attr('focusable', (d, i) =&gt; {
739
+ if (i % 3 === 0) {
740
+ return true;
741
+ }
742
+ })
743
+ // For accessibility, we add keyboard access to the filled slices
744
+ .on('keyup', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
745
+ const code = <span class="cstat-no" title="statement not covered" >event.keyCode || event.which;</span>
746
+ <span class="cstat-no" title="statement not covered" > if (code === 13) {</span>
747
+ const { name, link } = <span class="cstat-no" title="statement not covered" >validCategories[parseInt(i / 3)];</span>
748
+ <span class="cstat-no" title="statement not covered" > redirectToCategory(link, name);</span>
749
+ }
750
+ })
751
+ // On click - go to category page
752
+ .on('click', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
753
+ const { name, link } = <span class="cstat-no" title="statement not covered" >validCategories[parseInt(i / 3)];</span>
754
+ <span class="cstat-no" title="statement not covered" > redirectToCategory(link, name);</span>
755
+ });
810
756
  &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
- });
757
+ // Add accessibility description
758
+ arcs.append('desc').text((d, i) =&gt; {
759
+ if (i % 3 === 0) {
760
+ const { name, value, maxContribution } =
761
+ validCategories[parseInt(i / 3)];
762
+ return `${titleMapping[name]} ${value} out of ${maxContribution}`;
763
+ }
764
+ });
867
765
  &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
- });
766
+ arcs
767
+ .append('path')
768
+ .attr('d', chartArc)
769
+ // On mouse over - show category tooltip
770
+ .on('mouseover', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
771
+ const { name, value, maxContribution } =
772
+ <span class="cstat-no" title="statement not covered" > validCategories[parseInt(i / 3)];</span>
773
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
774
+ .style('opacity', 1)
775
+ .text(`${titleMapping[name]} ${value}/${maxContribution}`);
776
+ })
777
+ // On mouse move - move category tooltip
778
+ .on('mousemove', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
779
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
780
+ .style('top', event.clientY - HEIGHT + 10 + 'px')
781
+ .style('left', event.clientX + 'px');
782
+ })
783
+ // On mouse out - hide category tooltip
784
+ .on('mouseout', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
785
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip').style('opacity', 0);</span>
786
+ });
877
787
  &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
- });
788
+ // Adding title and subtitle
789
+ const text = svg
790
+ .append('g')
791
+ .attr('text-anchor', 'middle')
792
+ .attr('transform', `translate(${WIDTH / 2}, ${HEIGHT / 2})`);
901
793
  &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})`);
794
+ // Adding title - X%
795
+ text
796
+ .append('text')
797
+ .attr('y', 4)
798
+ .attr('class', 'chart-title')
799
+ .text(chartData.finalScore);
907
800
  &nbsp;
908
- // Adding title - X%
909
- text.append('text')
910
- .attr('y', 4)
911
- .attr('class', 'chart-title')
912
- .text(chartData.finalScore);
801
+ // Adding subtitle - OUT OF 100
802
+ text
803
+ .append('text')
804
+ .attr('y', 24)
805
+ .attr('class', 'chart-subtitle')
806
+ .text('OUT OF 100');
807
+ };
913
808
  &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
- }
809
+ const toggleLegend = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
810
+ <span class="cstat-no" title="statement not covered" > setHasLegend(!hasLegend);</span>
811
+ };
920
812
  &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>
813
+ useEffect(() =&gt; {
814
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (chartData?.finalScore) {
815
+ draw(chartData);
816
+ getAdvancingCareLabel();
923
817
  }
818
+ }, [chartData?.finalScore]);
924
819
  &nbsp;
925
- render() {
926
- const { categories } = this.props.chartData;
927
- let legendToggler;
928
- let legend;
820
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hasLegend) {
821
+ <span class="cstat-no" title="statement not covered" > legendToggler = (</span>
822
+ &lt;button className="open" type="button" aria-pressed="true"&gt;
823
+ Hide Legend
824
+ &lt;svg
825
+ className="right-icon rotated"
826
+ aria-hidden="true"
827
+ focusable="false"
828
+ &gt;
829
+ &lt;use xlinkHref="#chevron-down" /&gt;
830
+ &lt;/svg&gt;
831
+ &lt;/button&gt;
832
+ );
833
+ <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>
834
+ <span class="cstat-no" title="statement not covered" > return (</span>
835
+ &lt;li key={name} className="legend-axis"&gt;
836
+ &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;
837
+ &lt;span className={`legend-axis-color ${name}`} /&gt;
838
+ &amp;nbsp;
839
+ &lt;span className="legend-axis-title"&gt;{titleMapping[name]}&lt;/span&gt;
840
+ &amp;nbsp;
841
+ &lt;span className="legend-axis-value"&gt;{`${value}/${maxContribution}`}&lt;/span&gt;
842
+ &lt;/button&gt;
843
+ &lt;/li&gt;
844
+ );
845
+ });
846
+ } else {
847
+ legendToggler = (
848
+ &lt;button type="button" aria-pressed="false"&gt;
849
+ Show Legend
850
+ &lt;svg className="right-icon" aria-hidden="true" focusable="false"&gt;
851
+ &lt;use xlinkHref="#chevron-down" /&gt;
852
+ &lt;/svg&gt;
853
+ &lt;/button&gt;
854
+ );
855
+ }
929
856
  &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
- }
857
+ return (
858
+ &lt;div className="chart"&gt;
859
+ &lt;svg className="score-chart" focusable="false" /&gt;
860
+ &lt;div className="chart-tooltip off" /&gt;
861
+ &lt;div className="chart-legend-toggler" onClick={toggleLegend}&gt;
862
+ {legendToggler}
863
+ &lt;/div&gt;
864
+ &lt;ul className="chart-legend"&gt;{legend}&lt;/ul&gt;
865
+ &lt;/div&gt;
866
+ );
867
+ };
999
868
  &nbsp;
1000
869
  ScoreChart.propTypes = {
1001
- chartData: PropTypes.object,
1002
- linkCallback: PropTypes.func,
1003
- performanceYear: PropTypes.number
870
+ chartData: PropTypes.object,
871
+ linkCallback: PropTypes.func,
872
+ performanceYear: PropTypes.number,
1004
873
  };
874
+ &nbsp;
875
+ export default ScoreChart;
1005
876
  &nbsp;</pre></td></tr></table></pre>
1006
877
 
1007
878
  <div class='push'></div><!-- for sticky footer -->
1008
879
  </div><!-- /wrapper -->
1009
880
  <div class='footer quiet pad2 space-top1 center small'>
1010
881
  Code coverage generated by
1011
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1012
- at Mon Oct 05 2020 11:31:16 GMT-0700 (Pacific Daylight Time)
882
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
883
+ at Mon Mar 06 2023 14:49:52 GMT-0800 (Pacific Standard Time)
1013
884
  </div>
1014
- </div>
1015
885
  <script src="../../../../prettify.js"></script>
1016
886
  <script>
1017
887
  window.onload = function () {