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">66.04% </span>
26
+ <span class="strong">39.21% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>35/53</span>
28
+ <span class='fraction'>20/51</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">41.86% </span>
33
+ <span class="strong">9.61% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>18/43</span>
35
+ <span class='fraction'>5/52</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">16.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
42
+ <span class='fraction'>1/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">66.04% </span>
47
+ <span class="strong">39.21% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>35/53</span>
49
+ <span class='fraction'>20/51</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 medium'></div>
64
+ <div class='status-line low'></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>
@@ -256,122 +262,7 @@
256
262
  <a name='L197'></a><a href='#L197'>197</a>
257
263
  <a name='L198'></a><a href='#L198'>198</a>
258
264
  <a name='L199'></a><a href='#L199'>199</a>
259
- <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a>
322
- <a name='L263'></a><a href='#L263'>263</a>
323
- <a name='L264'></a><a href='#L264'>264</a>
324
- <a name='L265'></a><a href='#L265'>265</a>
325
- <a name='L266'></a><a href='#L266'>266</a>
326
- <a name='L267'></a><a href='#L267'>267</a>
327
- <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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <a name='L200'></a><a href='#L200'>200</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
375
266
  <span class="cline-any cline-neutral">&nbsp;</span>
376
267
  <span class="cline-any cline-neutral">&nbsp;</span>
377
268
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -382,8 +273,6 @@
382
273
  <span class="cline-any cline-neutral">&nbsp;</span>
383
274
  <span class="cline-any cline-neutral">&nbsp;</span>
384
275
  <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-yes">2x</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
276
  <span class="cline-any cline-neutral">&nbsp;</span>
388
277
  <span class="cline-any cline-neutral">&nbsp;</span>
389
278
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -392,78 +281,37 @@
392
281
  <span class="cline-any cline-neutral">&nbsp;</span>
393
282
  <span class="cline-any cline-neutral">&nbsp;</span>
394
283
  <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-yes">2x</span>
395
285
  <span class="cline-any cline-neutral">&nbsp;</span>
396
286
  <span class="cline-any cline-neutral">&nbsp;</span>
397
287
  <span class="cline-any cline-neutral">&nbsp;</span>
398
288
  <span class="cline-any cline-neutral">&nbsp;</span>
399
289
  <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-yes">1x</span>
401
- <span class="cline-any cline-yes">1x</span>
402
- <span class="cline-any cline-yes">1x</span>
403
- <span class="cline-any cline-yes">1x</span>
404
- <span class="cline-any cline-yes">1x</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
291
  <span class="cline-any cline-yes">1x</span>
406
292
  <span class="cline-any cline-neutral">&nbsp;</span>
407
293
  <span class="cline-any cline-yes">1x</span>
408
294
  <span class="cline-any cline-yes">1x</span>
409
295
  <span class="cline-any cline-yes">1x</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
296
  <span class="cline-any cline-yes">1x</span>
413
- <span class="cline-any cline-no">&nbsp;</span>
414
297
  <span class="cline-any cline-neutral">&nbsp;</span>
415
298
  <span class="cline-any cline-neutral">&nbsp;</span>
416
299
  <span class="cline-any cline-yes">1x</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
300
  <span class="cline-any cline-neutral">&nbsp;</span>
420
301
  <span class="cline-any cline-yes">1x</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-yes">1x</span>
423
303
  <span class="cline-any cline-neutral">&nbsp;</span>
424
304
  <span class="cline-any cline-yes">1x</span>
425
- <span class="cline-any cline-no">&nbsp;</span>
305
+ <span class="cline-any cline-yes">1x</span>
426
306
  <span class="cline-any cline-neutral">&nbsp;</span>
427
307
  <span class="cline-any cline-neutral">&nbsp;</span>
428
308
  <span class="cline-any cline-yes">1x</span>
429
309
  <span class="cline-any cline-no">&nbsp;</span>
430
310
  <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-yes">1x</span>
434
311
  <span class="cline-any cline-yes">1x</span>
435
312
  <span class="cline-any cline-neutral">&nbsp;</span>
436
313
  <span class="cline-any cline-yes">1x</span>
437
- <span class="cline-any cline-no">&nbsp;</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-no">&nbsp;</span>
449
- <span class="cline-any cline-no">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-yes">1x</span>
467
315
  <span class="cline-any cline-neutral">&nbsp;</span>
468
316
  <span class="cline-any cline-neutral">&nbsp;</span>
469
317
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -477,66 +325,14 @@
477
325
  <span class="cline-any cline-neutral">&nbsp;</span>
478
326
  <span class="cline-any cline-neutral">&nbsp;</span>
479
327
  <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
328
  <span class="cline-any cline-yes">1x</span>
483
329
  <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-yes">1x</span>
496
330
  <span class="cline-any cline-yes">1x</span>
497
331
  <span class="cline-any cline-neutral">&nbsp;</span>
498
332
  <span class="cline-any cline-neutral">&nbsp;</span>
499
333
  <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-yes">1x</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
334
  <span class="cline-any cline-no">&nbsp;</span>
511
335
  <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-yes">1x</span>
525
- <span class="cline-any cline-yes">1x</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">1x</span>
540
336
  <span class="cline-any cline-no">&nbsp;</span>
541
337
  <span class="cline-any cline-neutral">&nbsp;</span>
542
338
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -545,70 +341,62 @@
545
341
  <span class="cline-any cline-neutral">&nbsp;</span>
546
342
  <span class="cline-any cline-neutral">&nbsp;</span>
547
343
  <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">1x</span>
344
+ <span class="cline-any cline-no">&nbsp;</span>
554
345
  <span class="cline-any cline-no">&nbsp;</span>
555
346
  <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-no">&nbsp;</span>
556
348
  <span class="cline-any cline-neutral">&nbsp;</span>
557
349
  <span class="cline-any cline-neutral">&nbsp;</span>
558
350
  <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-no">&nbsp;</span>
352
+ <span class="cline-any cline-no">&nbsp;</span>
559
353
  <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-no">&nbsp;</span>
355
+ <span class="cline-any cline-no">&nbsp;</span>
560
356
  <span class="cline-any cline-neutral">&nbsp;</span>
561
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-no">&nbsp;</span>
562
359
  <span class="cline-any cline-neutral">&nbsp;</span>
563
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
564
362
  <span class="cline-any cline-neutral">&nbsp;</span>
565
363
  <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-yes">1x</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-yes">1x</span>
364
+ <span class="cline-any cline-no">&nbsp;</span>
581
365
  <span class="cline-any cline-no">&nbsp;</span>
582
366
  <span class="cline-any cline-neutral">&nbsp;</span>
583
367
  <span class="cline-any cline-neutral">&nbsp;</span>
584
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-no">&nbsp;</span>
370
+ <span class="cline-any cline-no">&nbsp;</span>
585
371
  <span class="cline-any cline-neutral">&nbsp;</span>
586
372
  <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-no">&nbsp;</span>
374
+ <span class="cline-any cline-no">&nbsp;</span>
587
375
  <span class="cline-any cline-neutral">&nbsp;</span>
588
376
  <span class="cline-any cline-neutral">&nbsp;</span>
589
377
  <span class="cline-any cline-neutral">&nbsp;</span>
590
378
  <span class="cline-any cline-neutral">&nbsp;</span>
591
379
  <span class="cline-any cline-neutral">&nbsp;</span>
592
380
  <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-yes">1x</span>
381
+ <span class="cline-any cline-no">&nbsp;</span>
595
382
  <span class="cline-any cline-no">&nbsp;</span>
596
383
  <span class="cline-any cline-neutral">&nbsp;</span>
597
384
  <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-no">&nbsp;</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
598
388
  <span class="cline-any cline-neutral">&nbsp;</span>
599
389
  <span class="cline-any cline-neutral">&nbsp;</span>
600
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-no">&nbsp;</span>
601
392
  <span class="cline-any cline-neutral">&nbsp;</span>
602
393
  <span class="cline-any cline-neutral">&nbsp;</span>
603
394
  <span class="cline-any cline-neutral">&nbsp;</span>
604
395
  <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-yes">1x</span>
609
396
  <span class="cline-any cline-no">&nbsp;</span>
610
397
  <span class="cline-any cline-neutral">&nbsp;</span>
611
398
  <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
612
400
  <span class="cline-any cline-neutral">&nbsp;</span>
613
401
  <span class="cline-any cline-neutral">&nbsp;</span>
614
402
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -623,12 +411,13 @@
623
411
  <span class="cline-any cline-neutral">&nbsp;</span>
624
412
  <span class="cline-any cline-neutral">&nbsp;</span>
625
413
  <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
626
416
  <span class="cline-any cline-neutral">&nbsp;</span>
627
417
  <span class="cline-any cline-neutral">&nbsp;</span>
628
418
  <span class="cline-any cline-neutral">&nbsp;</span>
629
419
  <span class="cline-any cline-neutral">&nbsp;</span>
630
420
  <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-yes">1x</span>
632
421
  <span class="cline-any cline-neutral">&nbsp;</span>
633
422
  <span class="cline-any cline-neutral">&nbsp;</span>
634
423
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -638,6 +427,7 @@
638
427
  <span class="cline-any cline-neutral">&nbsp;</span>
639
428
  <span class="cline-any cline-neutral">&nbsp;</span>
640
429
  <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-no">&nbsp;</span>
641
431
  <span class="cline-any cline-neutral">&nbsp;</span>
642
432
  <span class="cline-any cline-neutral">&nbsp;</span>
643
433
  <span class="cline-any cline-yes">1x</span>
@@ -651,11 +441,6 @@
651
441
  <span class="cline-any cline-neutral">&nbsp;</span>
652
442
  <span class="cline-any cline-neutral">&nbsp;</span>
653
443
  <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-yes">1x</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
444
  <span class="cline-any cline-neutral">&nbsp;</span>
660
445
  <span class="cline-any cline-neutral">&nbsp;</span>
661
446
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -676,299 +461,187 @@
676
461
  <span class="cline-any cline-neutral">&nbsp;</span>
677
462
  <span class="cline-any cline-neutral">&nbsp;</span>
678
463
  <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React from 'react';
464
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useState } from 'react';
465
+ import PropTypes from 'prop-types';
683
466
  import cookie from 'cookie';
684
467
  import jwtDecode from 'jwt-decode';
468
+ import { EyeIcon } from '../../../lib/SvgComponents';
685
469
  import { NavLinkContainer, NavLinkInline, NavLinkDrawer } from '../Links';
686
470
  import AnimationGroup from '../AnimationGroup/AnimationGroup';
687
- import * as SVG from '../../../lib/SvgComponents';
471
+ import defaultContent from '../UI/default-content';
688
472
  import {
689
- physicianCompareUrl,
690
- facilityBasedPreviewUrl,
691
- feedbackUrl,
692
- reportsPortalUrl,
473
+ loadUserPermissions,
474
+ getUrlConditionMap,
475
+ isMultiRoleUser,
476
+ getIcon,
477
+ isImpersonating,
478
+ isImpersonationLink,
479
+ loadSideNavContent,
693
480
  } from '../helpers';
694
- import PropTypes from 'prop-types';
481
+ import SelectRole from './SelectRole';
695
482
  &nbsp;
696
483
  const LevelOneContent = ({
697
484
  isExpanded,
698
- showDevPreDfpLink,
699
- showPhysicianCompareLink,
700
- showFacilityBasedPreviewLink,
701
- showApmIncentivePaymentLink,
702
- performanceYear,
703
- fbpPerformanceYear,
704
- showSelfNomination,
705
- style,
706
485
  config: { linkCallback, useTooltips } = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
707
- showReportsPortal,
708
- showTargetedReviewLink,
486
+ levelOneContent,
709
487
  }) =&gt; {
710
- let name = '';
711
- let hasAuthorizations = true;
712
- let isDevPre = false;
713
- let ehrAuthorized = false;
714
- let hasApmPayments = false;
715
- let hasNonRegistryAuthorizations = false;
716
- let cookies = cookie.parse(document.cookie);
488
+ let { qpp_is_dev_pre, qpp_auth_token } = cookie.parse(document.cookie);
717
489
  &nbsp;
718
- <span class="missing-if-branch" title="else path not taken" >E</span>if (cookies.hasOwnProperty('qpp_auth_token')) {
719
- const { data } = jwtDecode(cookies.qpp_auth_token);
720
- name = `${data.firstName} ${data.lastName}`;
721
- }
490
+ const [selectedRole, setSelectedRole] = useState('');
722
491
  &nbsp;
723
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_has_authorizations')) {
724
- <span class="cstat-no" title="statement not covered" > hasAuthorizations = cookies.qpp_has_authorizations === 'true';</span>
492
+ let name = '';
493
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (qpp_auth_token) {
494
+ const { firstName, lastName } = jwtDecode(qpp_auth_token);
495
+ name = `${firstName} ${lastName}`;
725
496
  }
726
497
  &nbsp;
727
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('user_has_apm_payments')) {
728
- <span class="cstat-no" title="statement not covered" > hasApmPayments = cookies.user_has_apm_payments === 'true';</span>
729
- }
498
+ const linkClass = isExpanded ? 'link-inline' : <span class="branch-1 cbranch-no" title="branch not covered" >'link-collapsed';</span>
730
499
  &nbsp;
731
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_is_dev_pre')) {
732
- <span class="cstat-no" title="statement not covered" > isDevPre = cookies.qpp_is_dev_pre === 'true';</span>
733
- }
500
+ const permissions = loadUserPermissions(document.cookie, selectedRole);
501
+ const { internalReviewerNames } = permissions;
734
502
  &nbsp;
735
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_ehr_authorized')) {
736
- <span class="cstat-no" title="statement not covered" > ehrAuthorized = cookies.qpp_ehr_authorized === 'true';</span>
737
- }
503
+ const hasMultipleRoles = isMultiRoleUser(document.cookie);
504
+ const isDevPre = qpp_is_dev_pre === 'true';
505
+ let content;
738
506
  &nbsp;
739
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_has_non_registry_authorizations')) {
740
- <span class="cstat-no" title="statement not covered" > hasNonRegistryAuthorizations =</span>
741
- cookies.qpp_has_non_registry_authorizations === 'true';
507
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (isDevPre) {
508
+ <span class="cstat-no" title="statement not covered" > content = levelOneContent?.devPre || defaultContent.devPre;</span>
509
+ } else {
510
+ if (!hasMultipleRoles) {
511
+ // internalReviewerNames has 1 value b/c !hasMultipleRoles
512
+ const reviewerRoleName = internalReviewerNames[0];
513
+ content = loadSideNavContent(reviewerRoleName, {
514
+ levelOneContent,
515
+ defaultContent,
516
+ });
517
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
518
+ <span class="cstat-no" title="statement not covered" > content = loadSideNavContent(</span>
519
+ selectedRole,
520
+ { levelOneContent, defaultContent },
521
+ true
522
+ );
523
+ }
742
524
  }
743
525
  &nbsp;
744
- const linkClass = isExpanded ? 'link-inline' : <span class="branch-1 cbranch-no" title="branch not covered" >'link-collapsed';</span>
745
- const listOfLinks = [];
526
+ // Mapping side nav link urls to the conditions that determine their inclusion in the side nav
527
+ const urlConditionMap = getUrlConditionMap(permissions);
746
528
  &nbsp;
747
- <span class="missing-if-branch" title="if path not taken" >I</span>if (isDevPre) {
748
- <span class="cstat-no" title="statement not covered" > if (ehrAuthorized) {</span>
749
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
750
- &lt;NavLinkInline
751
- icon={&lt;SVG.MyApplicationsIcon /&gt;}
752
- className={linkClass}
753
- url="/user/applications"
754
- label="My Applications"
755
- showLabel={isExpanded}
756
- useTooltips={useTooltips}
757
- /&gt;
758
- );
759
- <span class="cstat-no" title="statement not covered" > if (showDevPreDfpLink) {</span>
760
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
761
- &lt;NavLinkInline
762
- icon={&lt;SVG.MyTestDataIcon /&gt;}
763
- className={linkClass}
764
- url="/user/test-data"
765
- label="My Test Data"
766
- showLabel={isExpanded}
767
- useTooltips={useTooltips}
768
- /&gt;
529
+ const navLinks = content
530
+ .filter(<span class="fstat-no" title="function not covered" >(l</span>ink) =&gt; {
531
+ // Filter out Exception &amp; Targeted Review links for Helpdesk Viewer when not impersonating
532
+ const isHelpdeskRoleNotImpersonating =
533
+ <span class="cstat-no" title="statement not covered" > selectedRole === 'Helpdesk Viewer' &amp;&amp; !isImpersonating(document.cookie);</span>
534
+ <span class="cstat-no" title="statement not covered" > if (isHelpdeskRoleNotImpersonating) {</span>
535
+ <span class="cstat-no" title="statement not covered" > return (</span>
536
+ link.url !== '/user/exception/#/landing' &amp;&amp;
537
+ link.url !== '/user/targeted-review/#/landing'
769
538
  );
770
539
  }
771
- }
772
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
773
- &lt;NavLinkInline
774
- icon={&lt;SVG.ManageUsersIcon /&gt;}
775
- className={linkClass}
776
- url="/user/manage-access"
777
- label="Manage Access"
778
- showLabel={isExpanded}
779
- useTooltips={useTooltips}
780
- /&gt;
781
- );
782
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
783
- &lt;NavLinkInline
784
- icon={&lt;SVG.HelpSupportIcon /&gt;}
785
- className={linkClass}
786
- url="/developers"
787
- label="Developer Tools"
788
- showLabel={isExpanded}
789
- useTooltips={useTooltips}
790
- /&gt;
791
- );
792
- } else {
793
- listOfLinks.push(
794
- &lt;NavLinkInline
795
- key="account-dashboard-link"
796
- icon={&lt;SVG.AccountHomeIcon /&gt;}
797
- className={linkClass}
798
- url="/user/submissions"
799
- label="Account Home"
800
- linkCallback={linkCallback}
801
- showLabel={isExpanded}
802
- useTooltips={useTooltips}
803
- /&gt;
804
- );
805
540
  &nbsp;
806
- <span class="missing-if-branch" title="else path not taken" >E</span>if (hasAuthorizations) {
807
- listOfLinks.push(
808
- &lt;NavLinkInline
809
- key="eligibility-link"
810
- icon={&lt;SVG.DashboardIcon /&gt;}
811
- className={linkClass}
812
- url="/user/dashboard"
813
- label="Eligibility &amp; Reporting"
814
- showLabel={isExpanded}
815
- useTooltips={useTooltips}
816
- /&gt;
541
+ // Filter Content Manager links
542
+ // Check if user has content mgmt. admin || frontend author roles
543
+ const contentMgrCanManageDocs = <span class="cstat-no" title="statement not covered" >internalReviewerNames.some(<span class="fstat-no" title="function not covered" >(n</span>ame) =&gt;</span>
544
+ <span class="cstat-no" title="statement not covered" > name.includes('QPP Content Management')</span>
545
+ );
546
+ const contentMgrFrontendAuthor = <span class="cstat-no" title="statement not covered" >internalReviewerNames.includes(</span>
547
+ 'QPP Front-end - Author'
817
548
  );
818
549
  &nbsp;
819
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showFacilityBasedPreviewLink) {
820
- const facilityBasedPreviewUrlYear =
821
- <span class="cstat-no" title="statement not covered" > fbpPerformanceYear || performanceYear;</span>
822
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
823
- &lt;NavLinkInline
824
- icon={&lt;SVG.FacilityBasedPreviewIcon /&gt;}
825
- className={linkClass}
826
- url={facilityBasedPreviewUrl(facilityBasedPreviewUrlYear)}
827
- label="Facility Based Preview"
828
- linkCallback={linkCallback}
829
- showLabel={isExpanded}
830
- useTooltips={useTooltips}
831
- /&gt;
832
- );
550
+ <span class="cstat-no" title="statement not covered" > if (!contentMgrCanManageDocs) {</span>
551
+ <span class="cstat-no" title="statement not covered" > return link.label !== 'Manage Documents';</span>
552
+ }
553
+ <span class="cstat-no" title="statement not covered" > if (!contentMgrFrontendAuthor) {</span>
554
+ <span class="cstat-no" title="statement not covered" > return link.label !== 'Author Content';</span>
833
555
  }
834
556
  &nbsp;
835
- <span class="missing-if-branch" title="else path not taken" >E</span>if (performanceYear) {
836
- listOfLinks.push(
837
- &lt;NavLinkInline
838
- icon={&lt;SVG.StarIcon /&gt;}
839
- className={linkClass}
840
- urlExpressionToMatch={`${feedbackUrl}/[0-9][0-9][0-9][0-9]`}
841
- url={feedbackUrl}
842
- label="Performance Feedback"
843
- linkCallback={linkCallback}
844
- showLabel={isExpanded}
845
- useTooltips={useTooltips}
846
- /&gt;
847
- );
557
+ <span class="cstat-no" title="statement not covered" > return link;</span>
558
+ })
559
+ .reduce(<span class="fstat-no" title="function not covered" >(a</span>cc, link) =&gt; {
560
+ const { url, label, className, listOfLinks, ...rest } = <span class="cstat-no" title="statement not covered" >link;</span>
561
+ &nbsp;
562
+ // Any links failing the corresponding condition in the urlConditionMap are skipped
563
+ <span class="cstat-no" title="statement not covered" > if (url in urlConditionMap &amp;&amp; !urlConditionMap[url]) {</span>
564
+ <span class="cstat-no" title="statement not covered" > return acc;</span>
848
565
  }
849
566
  &nbsp;
850
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showApmIncentivePaymentLink &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >hasApmPayments)</span> {
851
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
852
- &lt;NavLinkInline
853
- icon={&lt;SVG.PaymentIcon /&gt;}
854
- className={linkClass}
855
- url="/user/apm-incentive-payments"
856
- label="APM Incentive Payments"
857
- linkCallback={linkCallback}
858
- showLabel={isExpanded}
859
- useTooltips={useTooltips}
860
- /&gt;
861
- );
567
+ const isContentMgrLink =
568
+ <span class="cstat-no" title="statement not covered" > label === 'Manage Documents' || label === 'Author Content';</span>
569
+ const IconComponent = <span class="cstat-no" title="statement not covered" >isContentMgrLink</span>
570
+ ? getIcon(null, label)
571
+ : getIcon(url);
572
+ const Icon = <span class="cstat-no" title="statement not covered" >IconComponent ? &lt;IconComponent /&gt; : null;</span>
573
+ const sharedProps = <span class="cstat-no" title="statement not covered" >{</span>
574
+ url,
575
+ label,
576
+ linkCallback,
577
+ className: className ? `${linkClass} ${className}` : linkClass,
578
+ };
579
+ &nbsp;
580
+ <span class="cstat-no" title="statement not covered" > if (isImpersonating(document.cookie)) {</span>
581
+ <span class="cstat-no" title="statement not covered" > sharedProps.className = `${sharedProps.className} includes-read-only`;</span>
862
582
  }
863
583
  &nbsp;
864
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showPhysicianCompareLink &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >hasNonRegistryAuthorizations)</span> {
865
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
584
+ const { pathname, hash } = <span class="cstat-no" title="statement not covered" >window.location;</span>
585
+ const filteredListOfLinks = <span class="cstat-no" title="statement not covered" >(listOfLinks || []).filter(<span class="fstat-no" title="function not covered" >(s</span>ublink) =&gt; {</span>
586
+ <span class="cstat-no" title="statement not covered" > return !(</span>
587
+ sublink.url in urlConditionMap &amp;&amp; !urlConditionMap[sublink.url]
588
+ );
589
+ });
590
+ <span class="cstat-no" title="statement not covered" > if (</span>
591
+ filteredListOfLinks?.length &gt; 0 &amp;&amp;
592
+ (pathname === url ||
593
+ filteredListOfLinks.some(
594
+ <span class="fstat-no" title="function not covered" > (s</span>ublink) =&gt;
595
+ <span class="cstat-no" title="statement not covered" > pathname === sublink.url || `${pathname}${hash}` === sublink.url</span>
596
+ ))
597
+ ) {
598
+ <span class="cstat-no" title="statement not covered" > acc.push(</span>
599
+ &lt;NavLinkDrawer
600
+ key={`nav-drawer-${url}-${label}`}
601
+ leftIcon={Icon}
602
+ listOfLinks={filteredListOfLinks}
603
+ isExpanded={isExpanded}
604
+ staticDrawer={false}
605
+ openByDefault
606
+ isAlwaysOpen
607
+ {...sharedProps}
608
+ {...rest}
609
+ /&gt;
610
+ );
611
+ } else {
612
+ // Check if link is associated with the impersonated user not the Helpdesk Viewer user
613
+ const impersonationLink = <span class="cstat-no" title="statement not covered" >isImpersonationLink(document.cookie, label);</span>
614
+ <span class="cstat-no" title="statement not covered" > acc.push(</span>
866
615
  &lt;NavLinkInline
867
- icon={&lt;SVG.PhysicianCompareIcon /&gt;}
868
- className={linkClass}
869
- url={physicianCompareUrl}
870
- label="Physician Compare Preview"
871
- linkCallback={linkCallback}
872
- showLabel={isExpanded}
616
+ key={`nav-link-${url}-${label}`}
617
+ icon={Icon}
618
+ className={impersonationLink ? 'read-only-link' : ''}
619
+ {...(impersonationLink
620
+ ? { rightIcon: &lt;EyeIcon classes="read-only-icon" /&gt; }
621
+ : null)}
873
622
  useTooltips={useTooltips}
623
+ showLabel={isExpanded}
624
+ {...sharedProps}
625
+ {...rest}
874
626
  /&gt;
875
627
  );
876
628
  }
877
- }
629
+ <span class="cstat-no" title="statement not covered" > return acc;</span>
630
+ }, []);
878
631
  &nbsp;
879
- listOfLinks.push(
880
- &lt;NavLinkInline
881
- icon={&lt;SVG.HardshipIcon /&gt;}
882
- className={linkClass}
883
- url="/user/exception/#/landing"
884
- label="Exceptions Application"
885
- linkCallback={linkCallback}
886
- showLabel={isExpanded}
887
- useTooltips={useTooltips}
888
- /&gt;
889
- );
890
- &nbsp;
891
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showTargetedReviewLink) {
892
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
893
- &lt;NavLinkInline
894
- icon={&lt;SVG.TargetIcon /&gt;}
895
- className={linkClass + ' stroke-based-icon'}
896
- url="/user/targeted-review/#/landing"
897
- label="Targeted Review"
898
- linkCallback={linkCallback}
899
- showLabel={isExpanded}
900
- useTooltips={useTooltips}
901
- /&gt;
902
- );
903
- }
904
- &nbsp;
905
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showReportsPortal) {
906
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
907
- &lt;NavLinkInline
908
- icon={&lt;SVG.HardshipIcon /&gt;}
909
- className={linkClass}
910
- url={reportsPortalUrl}
911
- label="Reports"
912
- linkCallback={linkCallback}
913
- showLabel={isExpanded}
914
- useTooltips={useTooltips}
915
- /&gt;
916
- );
917
- }
918
- &nbsp;
919
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showSelfNomination) {
920
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
921
- &lt;NavLinkDrawer
922
- key="connected-clinicians-link"
923
- isAlwaysOpen
924
- url="/user/manage-access"
925
- isExpanded={isExpanded}
926
- openByDefault={true}
927
- leftIcon={&lt;SVG.ManageUsersIcon /&gt;}
928
- className={linkClass}
929
- label="Manage Access"
930
- linkCallback={linkCallback}
931
- listOfLinks={[
932
- {
933
- url: '/user/self-nomination/#/landing',
934
- label: 'Registry/QCDR Self-Nomination',
935
- items: [],
936
- },
937
- ]}
938
- staticDrawer={false}
939
- /&gt;
940
- );
941
- } else {
942
- listOfLinks.push(
943
- &lt;NavLinkInline
944
- icon={&lt;SVG.ManageUsersIcon /&gt;}
945
- className={linkClass}
946
- url="/user/manage-access"
947
- label="Manage Access"
948
- showLabel={isExpanded}
949
- useTooltips={useTooltips}
950
- /&gt;
951
- );
952
- }
953
- &nbsp;
954
- listOfLinks.push(
955
- &lt;NavLinkInline
956
- icon={&lt;SVG.HelpSupportIcon /&gt;}
957
- className={linkClass}
958
- url="/about/help-and-support"
959
- label="Help and Support"
960
- showLabel={isExpanded}
961
- useTooltips={useTooltips}
962
- /&gt;
963
- );
964
- }
965
632
  return (
966
633
  &lt;div className="sidebar-content"&gt;
967
634
  &lt;AnimationGroup display={isExpanded}&gt;
968
635
  &lt;h1 className="label"&gt;{name}&lt;/h1&gt;
969
636
  &lt;/AnimationGroup&gt;
970
- &lt;div style={style} className="level-one-nav animation-flat"&gt;
971
- &lt;NavLinkContainer listOfLinks={listOfLinks} /&gt;
637
+ &lt;div className="level-one-nav animation-flat"&gt;
638
+ {hasMultipleRoles &amp;&amp; (
639
+ <span class="branch-1 cbranch-no" title="branch not covered" > &lt;SelectRole</span>
640
+ selectedRole={selectedRole}
641
+ setSelectedRole={setSelectedRole}
642
+ /&gt;
643
+ )}
644
+ &lt;NavLinkContainer listOfLinks={navLinks} /&gt;
972
645
  &lt;/div&gt;
973
646
  &lt;/div&gt;
974
647
  );
@@ -977,16 +650,13 @@ const LevelOneContent = ({
977
650
  LevelOneContent.propTypes = {
978
651
  isExpanded: PropTypes.bool,
979
652
  config: PropTypes.object,
980
- showDevPreDfpLink: PropTypes.bool,
981
- showPhysicianCompareLink: PropTypes.bool,
982
- showFacilityBasedPreviewLink: PropTypes.bool,
983
- showApmIncentivePaymentLink: PropTypes.bool,
984
- performanceYear: PropTypes.string,
985
- fbpPerformanceYear: PropTypes.string,
986
- showSelfNomination: PropTypes.bool,
987
- style: PropTypes.object,
988
- showReportsPortal: PropTypes.bool,
989
- showTargetedReviewLink: PropTypes.bool,
653
+ levelOneContent: PropTypes.shape({
654
+ default: PropTypes.arrayOf(PropTypes.object),
655
+ devPre: PropTypes.arrayOf(PropTypes.object),
656
+ viewer: PropTypes.arrayOf(PropTypes.object),
657
+ internalReviewers: PropTypes.arrayOf(PropTypes.object),
658
+ contentManager: PropTypes.arrayOf(PropTypes.object),
659
+ }),
990
660
  };
991
661
  &nbsp;
992
662
  export default LevelOneContent;
@@ -996,10 +666,9 @@ export default LevelOneContent;
996
666
  </div><!-- /wrapper -->
997
667
  <div class='footer quiet pad2 space-top1 center small'>
998
668
  Code coverage generated by
999
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1000
- at Mon Oct 05 2020 11:31:16 GMT-0700 (Pacific Daylight Time)
669
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
670
+ at Mon Mar 06 2023 14:49:52 GMT-0800 (Pacific Standard Time)
1001
671
  </div>
1002
- </div>
1003
672
  <script src="../../../../prettify.js"></script>
1004
673
  <script>
1005
674
  window.onload = function () {