qpp-style 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/.eslintrc.js +28 -28
  2. package/.husky/pre-commit +5 -0
  3. package/README.md +45 -0
  4. package/components/Accordion/index.jsx +35 -43
  5. package/components/Alert/index.js +53 -0
  6. package/components/Breadcrumb/index.js +4 -4
  7. package/components/Button/index.js +17 -6
  8. package/components/CalloutBox/index.js +109 -0
  9. package/components/Card/index.js +137 -0
  10. package/components/Details/DetailsIcons.js +50 -0
  11. package/components/Details/index.js +53 -0
  12. package/components/Dropdown/index.js +85 -0
  13. package/components/DropdownButton/Menu.js +25 -0
  14. package/components/DropdownButton/MenuButton.js +41 -0
  15. package/components/DropdownButton/MenuItem.js +25 -0
  16. package/components/DropdownButton/MenuItemLink.js +27 -0
  17. package/components/Error/Collapsible.jsx +2 -2
  18. package/components/Footer/FooterUI.jsx +175 -177
  19. package/components/Footer/footer.js +2 -12
  20. package/components/GovBanner/index.js +117 -0
  21. package/components/Header/HeaderAccountMenu.jsx +49 -75
  22. package/components/Header/HeaderContainer.jsx +46 -34
  23. package/components/Header/HeaderLogo.jsx +40 -17
  24. package/components/Header/HeaderMenuButton.js +38 -12
  25. package/components/Header/HeaderMenuItem.jsx +204 -64
  26. package/components/Header/HeaderMenuLink.js +46 -10
  27. package/components/Header/HeaderMenuSignOutButton.js +46 -10
  28. package/components/Header/HeaderMobileButton.js +15 -6
  29. package/components/Header/HeaderUI.jsx +118 -117
  30. package/components/Header/HelpIcon.jsx +7 -5
  31. package/components/Header/ImpersonatorBanner.jsx +81 -0
  32. package/components/Header/header.js +2 -0
  33. package/components/Header/hooks.js +53 -1
  34. package/components/Header/utag-helpers.js +9 -0
  35. package/components/Infotip/Infotip.jsx +6 -10
  36. package/components/Infotip/InfotipContent.jsx +46 -0
  37. package/components/Infotip/InfotipIcon.jsx +3 -3
  38. package/components/Link/index.js +61 -0
  39. package/components/Modal/Modal.jsx +53 -40
  40. package/components/Modal/index.jsx +11 -11
  41. package/components/NotificationBanner/CollapsedView.js +39 -0
  42. package/components/NotificationBanner/ExpandedView.js +45 -0
  43. package/components/NotificationBanner/index.js +219 -30
  44. package/components/Search/index.js +98 -0
  45. package/components/SessionDialog/sessionDialog.js +26 -0
  46. package/components/SessionDialogUI.jsx +34 -26
  47. package/components/SideNav/AnimationGroup/AnimationGroup.jsx +9 -2
  48. package/components/SideNav/Chart/ScoreChart.jsx +1 -1
  49. package/components/SideNav/Chart/__tests__/ScoreChart.test.js +3 -12
  50. package/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +144 -35
  51. package/components/SideNav/Chart/index.js +1 -1
  52. package/components/SideNav/Content/LevelOneContent.jsx +145 -255
  53. package/components/SideNav/Content/LevelTwoContent.jsx +12 -10
  54. package/components/SideNav/Content/SelectRole/index.js +77 -0
  55. package/components/SideNav/Content/SelectRole/utils.js +140 -0
  56. package/components/SideNav/Details/PracticeDetails.jsx +4 -0
  57. package/components/SideNav/Links/CmsSwitchLink.jsx +1 -1
  58. package/components/SideNav/Links/NavLinkContainer.jsx +29 -34
  59. package/components/SideNav/Links/NavLinkDrawer.jsx +100 -17
  60. package/components/SideNav/Links/NavLinkInline.jsx +7 -2
  61. package/components/SideNav/SideNav.md +28 -27
  62. package/components/SideNav/UI/SideNavUI.jsx +122 -129
  63. package/components/SideNav/UI/default-content.json +117 -0
  64. package/components/SideNav/helpers.js +316 -4
  65. package/components/Tabs/TabPanel.js +5 -0
  66. package/components/Tabs/Tabs.js +73 -0
  67. package/components/TextInput/index.js +137 -0
  68. package/components/hooks/useGetConfig.js +75 -0
  69. package/components/index.js +103 -9
  70. package/coverage/clover.xml +1465 -41
  71. package/coverage/coverage-final.json +72 -1
  72. package/coverage/lcov-report/block-navigation.js +8 -0
  73. package/coverage/lcov-report/components/Accordion/index.html +26 -21
  74. package/coverage/lcov-report/components/Accordion/index.jsx.html +106 -131
  75. package/coverage/lcov-report/{SideNav/Chart → components/Button}/index.html +29 -24
  76. package/coverage/lcov-report/{Error/Collapsible.jsx.html → components/Button/index.js.html} +125 -114
  77. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +92 -87
  78. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +32 -33
  79. package/coverage/lcov-report/components/Error/index.html +11 -6
  80. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +200 -189
  81. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +24 -61
  82. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +18 -13
  83. package/coverage/lcov-report/components/Footer/index.html +35 -45
  84. package/coverage/lcov-report/components/{InfoModal → GovBanner}/index.html +27 -22
  85. package/coverage/lcov-report/components/{InfoModal/index.jsx.html → GovBanner/index.js.html} +157 -122
  86. package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +93 -520
  87. package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +19 -23
  88. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
  89. package/coverage/lcov-report/components/{SideNav/Links/NavLinkContainer.jsx.html → Header/HeaderLogo.jsx.html} +78 -67
  90. package/coverage/lcov-report/components/{SideNav/Links/NavItemInline.jsx.html → Header/HeaderMenuButton.js.html} +71 -78
  91. package/coverage/lcov-report/components/{SideNav/Links/NavLinkDrawer.jsx.html → Header/HeaderMenuItem.jsx.html} +291 -268
  92. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  93. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  94. package/coverage/lcov-report/components/{SideNav/Links/NavLinkToggle.jsx.html → Header/HeaderMobileButton.js.html} +64 -47
  95. package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +176 -756
  96. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  97. package/coverage/lcov-report/{Accordion/index.jsx.html → components/Header/ImpersonatorBanner.jsx.html} +109 -167
  98. package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +24 -19
  99. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  100. package/coverage/lcov-report/components/Header/index.html +203 -33
  101. package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +35 -42
  102. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +53 -48
  103. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +37 -32
  104. package/coverage/lcov-report/components/Infotip/index.html +8 -3
  105. package/coverage/lcov-report/components/Infotip/index.js.html +8 -3
  106. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
  107. package/coverage/lcov-report/{HeaderUI.jsx.html → components/Modal/Modal.jsx.html} +169 -257
  108. package/coverage/lcov-report/components/Modal/index.html +146 -0
  109. package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Modal/index.jsx.html} +50 -42
  110. package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +202 -0
  111. package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +220 -0
  112. package/coverage/lcov-report/components/NotificationBanner/index.html +58 -23
  113. package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → NotificationBanner/index.js.html} +292 -272
  114. package/coverage/lcov-report/components/SanitizedContent/index.html +8 -3
  115. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +475 -50
  116. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +248 -255
  117. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +272 -408
  118. package/coverage/lcov-report/components/SideNav/Chart/index.html +28 -38
  119. package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +116 -0
  120. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  121. package/coverage/lcov-report/components/SideNav/helpers.js.html +987 -46
  122. package/coverage/lcov-report/components/SideNav/index.html +24 -19
  123. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +70 -65
  124. package/coverage/lcov-report/components/Tooltip/index.html +8 -3
  125. package/coverage/lcov-report/components/Tooltip/index.js.html +8 -3
  126. package/coverage/lcov-report/components/Tooltip/position.js.html +57 -64
  127. package/coverage/lcov-report/components/hooks/index.html +116 -0
  128. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +310 -0
  129. package/coverage/lcov-report/components/index.html +10 -5
  130. package/coverage/lcov-report/index.html +401 -21
  131. package/coverage/lcov-report/{Error/ErrorUI.jsx.html → lib/Chevron.jsx.html} +44 -42
  132. package/coverage/lcov-report/lib/SvgComponents.jsx.html +1840 -0
  133. package/coverage/lcov-report/lib/index.html +34 -14
  134. package/coverage/lcov-report/react/components/Accordion/index.html +26 -21
  135. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +67 -86
  136. package/coverage/lcov-report/react/components/{FlashNotification → Button}/index.html +23 -33
  137. package/coverage/lcov-report/{components/SideNav/Links/NavLinkInline.jsx.html → react/components/Button/index.js.html} +119 -120
  138. package/coverage/lcov-report/react/components/{Tabs → Dropdown}/index.html +23 -33
  139. package/coverage/lcov-report/react/components/{InfoModal/index.jsx.html → Dropdown/index.js.html} +102 -154
  140. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +26 -21
  141. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +11 -6
  142. package/coverage/lcov-report/react/components/Error/error.js.html +8 -3
  143. package/coverage/lcov-report/react/components/Error/index.html +11 -6
  144. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +196 -194
  145. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +9 -4
  146. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +18 -13
  147. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +18 -13
  148. package/coverage/lcov-report/react/components/Footer/footer.js.html +12 -37
  149. package/coverage/lcov-report/react/components/Footer/index.html +35 -45
  150. package/coverage/lcov-report/react/components/{InfoModal → GovBanner}/index.html +27 -22
  151. package/coverage/lcov-report/react/components/{Tabs/TabsUI.jsx.html → GovBanner/index.js.html} +146 -153
  152. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +81 -154
  153. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +15 -10
  154. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +91 -50
  155. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +105 -31
  156. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +109 -26
  157. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +510 -85
  158. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +137 -24
  159. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +134 -21
  160. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +56 -24
  161. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +172 -179
  162. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +30 -19
  163. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +331 -0
  164. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +9 -4
  165. package/coverage/lcov-report/react/components/Header/header.js.html +15 -4
  166. package/coverage/lcov-report/react/components/Header/hooks.js.html +187 -26
  167. package/coverage/lcov-report/react/components/Header/index.html +157 -122
  168. package/coverage/lcov-report/react/components/{Spinner/index.js.html → Header/utag-helpers.js.html} +26 -21
  169. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +12 -7
  170. package/coverage/lcov-report/react/components/{Tabs/tabs.js.html → Infotip/InfotipContent.jsx.html} +83 -48
  171. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +12 -7
  172. package/coverage/lcov-report/react/components/Infotip/index.html +8 -3
  173. package/coverage/lcov-report/react/components/Infotip/index.js.html +8 -3
  174. package/coverage/lcov-report/react/components/{FlashNotification/FlashNotificationUI.jsx.html → Modal/LegacyModal.jsx.html} +89 -84
  175. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +505 -0
  176. package/coverage/lcov-report/react/components/Modal/index.html +52 -17
  177. package/coverage/lcov-report/react/components/Modal/index.jsx.html +38 -201
  178. package/coverage/lcov-report/{components/SideNav/Links/CmsSwitchLink.jsx.html → react/components/NotificationBanner/CollapsedView.js.html} +52 -50
  179. package/coverage/lcov-report/{components/SideNav/Details/PracticeDetails.jsx.html → react/components/NotificationBanner/ExpandedView.js.html} +74 -57
  180. package/coverage/lcov-report/react/components/NotificationBanner/index.html +56 -21
  181. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +615 -43
  182. package/coverage/lcov-report/react/components/SanitizedContent/index.html +8 -3
  183. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +12 -7
  184. package/coverage/lcov-report/react/components/{Spinner → SessionDialog}/index.html +11 -6
  185. package/coverage/lcov-report/react/components/{FlashNotification/index.js.html → SessionDialog/sessionDialog.js.html} +35 -42
  186. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +80 -51
  187. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +38 -12
  188. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +18 -13
  189. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +67 -56
  190. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +26 -21
  191. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +9 -4
  192. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +189 -514
  193. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +28 -17
  194. package/coverage/lcov-report/{components/SideNav/Details → react/components/SideNav/Content/SelectRole}/index.html +42 -52
  195. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +316 -0
  196. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  197. package/coverage/lcov-report/react/components/SideNav/Content/index.html +32 -27
  198. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +8 -3
  199. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +10 -5
  200. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +26 -9
  201. package/coverage/lcov-report/react/components/SideNav/Details/index.html +23 -18
  202. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +8 -3
  203. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +9 -4
  204. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +8 -3
  205. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +54 -64
  206. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +281 -27
  207. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +66 -46
  208. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +8 -3
  209. package/coverage/lcov-report/react/components/SideNav/Links/index.html +44 -39
  210. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +8 -3
  211. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +165 -181
  212. package/coverage/lcov-report/react/components/SideNav/UI/index.html +28 -23
  213. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +8 -3
  214. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +967 -26
  215. package/coverage/lcov-report/react/components/SideNav/index.html +27 -22
  216. package/coverage/lcov-report/react/components/SideNav/index.js.html +8 -3
  217. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +20 -15
  218. package/coverage/lcov-report/react/components/Tooltip/index.html +8 -3
  219. package/coverage/lcov-report/react/components/Tooltip/index.js.html +8 -3
  220. package/coverage/lcov-report/react/components/Tooltip/position.js.html +22 -17
  221. package/coverage/lcov-report/{components/SideNav/AnimationGroup → react/components/hooks}/index.html +29 -24
  222. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +310 -0
  223. package/coverage/lcov-report/react/components/index.html +10 -5
  224. package/coverage/lcov-report/react/index.html +20 -15
  225. package/coverage/lcov-report/react/index.js.html +29 -9
  226. package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
  227. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +221 -132
  228. package/coverage/lcov-report/react/lib/index.html +32 -27
  229. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +8 -3
  230. package/coverage/lcov-report/react/session/index.html +32 -27
  231. package/coverage/lcov-report/react/session/index.js.html +8 -3
  232. package/coverage/lcov-report/react/session/logout.js.html +122 -18
  233. package/coverage/lcov-report/react/session/refresh.js.html +12 -7
  234. package/coverage/lcov-report/react/session/ttl.js.html +9 -4
  235. package/coverage/lcov-report/session/index.html +50 -45
  236. package/coverage/lcov-report/session/index.js.html +8 -3
  237. package/coverage/lcov-report/session/logout.js.html +144 -49
  238. package/coverage/lcov-report/session/refresh.js.html +41 -36
  239. package/coverage/lcov-report/session/ttl.js.html +34 -29
  240. package/coverage/lcov-report/sorter.js +26 -0
  241. package/coverage/lcov.info +3189 -46
  242. package/dist/browser.js +1 -1
  243. package/dist/browser.js.LICENSE.txt +1 -7
  244. package/dist/browser.js.map +1 -1
  245. package/dist/index.js +1 -1
  246. package/dist/index.js.LICENSE.txt +1 -7
  247. package/dist/index.js.map +1 -1
  248. package/dist/react/index.js +1 -1
  249. package/dist/react/index.js.LICENSE.txt +16 -16
  250. package/dist/react/index.js.map +1 -1
  251. package/fonts/PublicSans-Black.ttf +0 -0
  252. package/fonts/PublicSans-BlackItalic.ttf +0 -0
  253. package/fonts/PublicSans-Bold.ttf +0 -0
  254. package/fonts/PublicSans-BoldItalic.ttf +0 -0
  255. package/fonts/PublicSans-ExtraBold.ttf +0 -0
  256. package/fonts/PublicSans-ExtraBoldItalic.ttf +0 -0
  257. package/fonts/PublicSans-ExtraLight.ttf +0 -0
  258. package/fonts/PublicSans-ExtraLightItalic.ttf +0 -0
  259. package/fonts/PublicSans-Italic.ttf +0 -0
  260. package/fonts/PublicSans-Light.ttf +0 -0
  261. package/fonts/PublicSans-LightItalic.ttf +0 -0
  262. package/fonts/PublicSans-Medium.ttf +0 -0
  263. package/fonts/PublicSans-MediumItalic.ttf +0 -0
  264. package/fonts/PublicSans-Regular.ttf +0 -0
  265. package/fonts/PublicSans-SemiBold.ttf +0 -0
  266. package/fonts/PublicSans-SemiBoldItalic.ttf +0 -0
  267. package/fonts/PublicSans-Thin.ttf +0 -0
  268. package/fonts/PublicSans-ThinItalic.ttf +0 -0
  269. package/images/icon-dot-gov.svg +1 -0
  270. package/images/icon-https.svg +1 -0
  271. package/images/icons/close-x.svg +6 -0
  272. package/images/icons/svg/arrow-down.svg +3 -0
  273. package/images/icons/svg/arrow-download.svg +1 -0
  274. package/images/icons/svg/arrow-right.svg +1 -0
  275. package/images/icons/svg/arrow-up.svg +3 -0
  276. package/images/icons/svg/block.svg +5 -0
  277. package/images/icons/svg/calendar.svg +1 -0
  278. package/images/icons/svg/check-circle.svg +5 -0
  279. package/images/icons/svg/checkmark.svg +7 -0
  280. package/images/icons/svg/chevron-down.svg +11 -0
  281. package/images/icons/svg/chevron-left.svg +12 -0
  282. package/images/icons/svg/chevron-right.svg +12 -0
  283. package/images/icons/svg/chevron-up.svg +12 -0
  284. package/images/icons/svg/clipboard.svg +1 -0
  285. package/images/icons/svg/close.svg +1 -0
  286. package/images/icons/svg/divide.svg +13 -0
  287. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  288. package/images/icons/svg/download.svg +1 -0
  289. package/images/icons/svg/dropdown-arrow.svg +1 -0
  290. package/images/icons/svg/equals.svg +13 -0
  291. package/images/icons/svg/exclamation.svg +11 -0
  292. package/images/icons/svg/external.svg +1 -0
  293. package/images/icons/svg/file-download.svg +1 -0
  294. package/images/icons/svg/file-upload.svg +1 -0
  295. package/images/icons/svg/info.svg +20 -0
  296. package/images/icons/svg/manage-user-access.svg +8 -0
  297. package/images/icons/svg/multiply.svg +12 -0
  298. package/images/icons/svg/performance-feedback.svg +1 -0
  299. package/images/icons/svg/plus.svg +12 -0
  300. package/images/icons/svg/preview.svg +17 -0
  301. package/images/icons/svg/print.svg +1 -0
  302. package/images/icons/svg/registration.svg +8 -0
  303. package/images/icons/svg/reporting.svg +17 -0
  304. package/images/icons/svg/save-disk.svg +5 -0
  305. package/images/icons/svg/search.svg +1 -0
  306. package/images/icons/svg/subtract.svg +15 -0
  307. package/images/icons/svg/targeted-review.svg +15 -0
  308. package/images/icons/svg/tooltip-question.svg +1 -0
  309. package/images/icons/svg/trash.svg +1 -0
  310. package/images/icons/svg/upload.svg +1 -0
  311. package/images/us_flag_small.png +0 -0
  312. package/index.js +5 -0
  313. package/jest.config.js +139 -132
  314. package/lib/Chevron.jsx +32 -0
  315. package/lib/SvgComponents.jsx +197 -49
  316. package/package.json +60 -78
  317. package/session/logout.js +35 -2
  318. package/styles/_global.scss +63 -62
  319. package/styles/_main.scss +6 -0
  320. package/styles/_qpp-style.scss +0 -3
  321. package/styles/components/_accordion.scss +249 -246
  322. package/styles/components/_autocomplete.scss +0 -3
  323. package/styles/components/_spinner.scss +0 -2
  324. package/styles/components/_tables.scss +77 -67
  325. package/styles/components/_text.scss +102 -102
  326. package/styles/components/_variables.scss +12 -12
  327. package/styles/qppds/base/_backgrounds.scss +1 -6
  328. package/styles/qppds/base/_fonts.scss +24 -0
  329. package/styles/qppds/base/_icon.scss +31 -0
  330. package/styles/qppds/base/_layout.scss +5 -0
  331. package/styles/qppds/base/_typography.scss +77 -43
  332. package/styles/qppds/base/index.scss +3 -6
  333. package/styles/qppds/components/_alert.scss +101 -0
  334. package/styles/qppds/components/_breadcrumbs.scss +42 -10
  335. package/styles/qppds/components/_button.scss +38 -12
  336. package/styles/qppds/components/_card.scss +175 -0
  337. package/styles/qppds/components/_checkbox.scss +199 -0
  338. package/styles/qppds/components/_circular-loader.scss +47 -0
  339. package/styles/qppds/components/_details.scss +90 -0
  340. package/styles/qppds/components/_dropdown-menu.scss +125 -0
  341. package/styles/qppds/components/_dropdown.scss +5 -0
  342. package/styles/qppds/components/_footer.scss +606 -0
  343. package/styles/qppds/components/_gov-banner.scss +344 -0
  344. package/styles/{components → qppds/components}/_header.scss +460 -24
  345. package/styles/qppds/components/_link.scss +32 -9
  346. package/styles/qppds/components/_modal.scss +61 -21
  347. package/styles/qppds/components/_page-header.scss +65 -2
  348. package/styles/qppds/components/_pagination.scss +227 -0
  349. package/styles/qppds/components/_process-list.scss +104 -0
  350. package/styles/qppds/components/_radio-button.scss +184 -0
  351. package/styles/qppds/components/_search.scss +118 -0
  352. package/styles/{components → qppds/components}/_sidebar.scss +2 -0
  353. package/styles/qppds/components/_step-indicator.scss +190 -0
  354. package/styles/qppds/components/_table.scss +157 -0
  355. package/styles/qppds/components/_tabs.scss +197 -0
  356. package/styles/qppds/components/_text-input.scss +60 -0
  357. package/styles/qppds/components/index.scss +18 -0
  358. package/styles/{components → qppds/components}/sidebar/_links.scss +48 -1
  359. package/styles/qppds/components/sidebar/_select-role-dropdown.scss +21 -0
  360. package/styles/{components → qppds/components}/sidebar/_sidebar-animation.scss +4 -0
  361. package/styles/qppds/components/sidebar/_sidebar.scss +146 -0
  362. package/styles/qppds/settings/_functions.scss +3 -1
  363. package/styles/qppds/settings/mixins/_borders.scss +6 -0
  364. package/styles/qppds/settings/mixins/_focus.scss +7 -1
  365. package/styles/qppds/settings/mixins/_icons.scss +39 -4
  366. package/styles/qppds/settings/mixins/_index.scss +3 -0
  367. package/styles/qppds/settings/mixins/_layout.scss +46 -7
  368. package/styles/qppds/settings/mixins/_table.scss +91 -0
  369. package/styles/qppds/settings/mixins/_type.scss +89 -0
  370. package/styles/qppds/settings/variables/_color.scss +47 -1
  371. package/styles/qppds/settings/variables/_index.scss +2 -1
  372. package/styles/qppds/settings/variables/_layout.scss +34 -9
  373. package/styles/qppds/settings/variables/_type.scss +41 -0
  374. package/styles/qppds/settings/variables/_z-index.scss +8 -0
  375. package/styles/qppds/utilities/_background-color.scss +4 -0
  376. package/styles/qppds/utilities/_color.scss +24 -0
  377. package/styles/qppds/utilities/{_display-visability.scss → _display-visibility.scss} +8 -0
  378. package/styles/qppds/utilities/_flexbox.scss +113 -0
  379. package/styles/qppds/utilities/_font-family.scss +4 -0
  380. package/styles/qppds/utilities/_gap.scss +38 -0
  381. package/styles/qppds/utilities/_height.scss +79 -0
  382. package/styles/qppds/utilities/_list-style.scss +18 -0
  383. package/styles/qppds/utilities/_position.scss +24 -0
  384. package/styles/qppds/utilities/_text-align.scss +40 -0
  385. package/styles/qppds/utilities/_text-transform.scss +7 -0
  386. package/styles/qppds/utilities/_truncate.scss +5 -5
  387. package/styles/qppds/utilities/_vertical-align.scss +72 -0
  388. package/styles/qppds/utilities/_width.scss +38 -1
  389. package/styles/qppds/utilities/index.scss +8 -2
  390. package/svgo.config.js +14 -0
  391. package/test/components/Accordion.test.js +4 -13
  392. package/test/components/ErrorUI.test.js +10 -46
  393. package/test/components/FooterUI.test.js +0 -30
  394. package/test/components/HeaderUI.test.js +32 -40
  395. package/test/components/Infotip.test.js +18 -12
  396. package/test/components/SessionDialogUI.test.js +55 -70
  397. package/test-setup.js +0 -8
  398. package/webpack.config.js +29 -39
  399. package/webpack.config.react.js +7 -18
  400. package/.storybook/.babelrc +0 -4
  401. package/.storybook/main.js +0 -88
  402. package/.storybook/preview-head.html +0 -9
  403. package/.storybook/preview.js +0 -5
  404. package/Session.vim +0 -83
  405. package/components/Accordion/Accordion.stories.js +0 -20
  406. package/components/Breadcrumb/Breadcrumb.stories.js +0 -58
  407. package/components/Button/Button.stories.js +0 -125
  408. package/components/Footer/Footer.stories.js +0 -20
  409. package/components/Footer/LegacyFooterUI.jsx +0 -194
  410. package/components/Header/Header.stories.js +0 -32
  411. package/components/InfoModal/InfoModal.stories.js +0 -98
  412. package/components/InfoModal/index.jsx +0 -104
  413. package/components/Infotip/Infotip.stories.js +0 -50
  414. package/components/Modal/Modal.stories.js +0 -159
  415. package/components/NotificationBanner/NotificationBanner.stories.js +0 -22
  416. package/components/NotificationBanner/NotificationBannerUI.jsx +0 -282
  417. package/components/SideNav/SideNav.stories.js +0 -397
  418. package/components/Spinner/index.js +0 -9
  419. package/components/Tabs/TabsUI.jsx +0 -118
  420. package/components/Tabs/tabs.js +0 -36
  421. package/components/Tooltip/Tooltip.jsx +0 -88
  422. package/components/Tooltip/Tooltip.stories.js +0 -80
  423. package/components/Tooltip/index.js +0 -3
  424. package/components/Tooltip/position.js +0 -68
  425. package/components/UnwrappedSpinner/index.js +0 -8
  426. package/components/UnwrappedTabs/TabPanelUI.jsx +0 -16
  427. package/components/UnwrappedTabs/TabsUI.jsx +0 -82
  428. package/coverage/lcov-report/Accordion/index.html +0 -111
  429. package/coverage/lcov-report/Error/index.html +0 -126
  430. package/coverage/lcov-report/ScoreChart.jsx.html +0 -1025
  431. package/coverage/lcov-report/SideNav/Chart/ScoreChart.jsx.html +0 -1025
  432. package/coverage/lcov-report/components/Footer/LegacyFooterUI.jsx.html +0 -668
  433. package/coverage/lcov-report/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -1010
  434. package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -131
  435. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -89
  436. package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +0 -1007
  437. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -141
  438. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -92
  439. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -92
  440. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -201
  441. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1298
  442. package/coverage/lcov-report/components/SideNav/UI/index.html +0 -126
  443. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -89
  444. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -1319
  445. package/coverage/lcov-report/react/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -926
  446. package/styles/components/_footer.scss +0 -593
  447. package/styles/components/_header_backup.scss +0 -574
  448. package/styles/components/sidebar/_sidebar.scss +0 -141
  449. package/test/components/Tooltip.test.js +0 -147
  450. package/test/components/__snapshots__/Accordion.test.js.snap +0 -11439
  451. package/test/components/__snapshots__/HeaderUI.test.js.snap +0 -3
  452. /package/styles/{components → qppds/components}/sidebar/_animations.scss +0 -0
  453. /package/styles/{components → qppds/components}/sidebar/_cms.scss +0 -0
  454. /package/styles/{components → qppds/components}/sidebar/_details.scss +0 -0
  455. /package/styles/{components → qppds/components}/sidebar/_sidebar-tooltip.scss +0 -0
  456. /package/styles/{components → qppds/components}/sidebar/project-specific/_wi.scss +0 -0
@@ -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,120 +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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <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>
373
266
  <span class="cline-any cline-neutral">&nbsp;</span>
374
267
  <span class="cline-any cline-neutral">&nbsp;</span>
375
268
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -380,7 +273,6 @@
380
273
  <span class="cline-any cline-neutral">&nbsp;</span>
381
274
  <span class="cline-any cline-neutral">&nbsp;</span>
382
275
  <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-yes">2x</span>
384
276
  <span class="cline-any cline-neutral">&nbsp;</span>
385
277
  <span class="cline-any cline-neutral">&nbsp;</span>
386
278
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -389,78 +281,37 @@
389
281
  <span class="cline-any cline-neutral">&nbsp;</span>
390
282
  <span class="cline-any cline-neutral">&nbsp;</span>
391
283
  <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-yes">2x</span>
392
285
  <span class="cline-any cline-neutral">&nbsp;</span>
393
286
  <span class="cline-any cline-neutral">&nbsp;</span>
394
287
  <span class="cline-any cline-neutral">&nbsp;</span>
395
288
  <span class="cline-any cline-neutral">&nbsp;</span>
396
289
  <span class="cline-any cline-yes">1x</span>
397
- <span class="cline-any cline-yes">1x</span>
398
- <span class="cline-any cline-yes">1x</span>
399
- <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>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
291
  <span class="cline-any cline-yes">1x</span>
403
292
  <span class="cline-any cline-neutral">&nbsp;</span>
404
293
  <span class="cline-any cline-yes">1x</span>
405
294
  <span class="cline-any cline-yes">1x</span>
406
295
  <span class="cline-any cline-yes">1x</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
296
  <span class="cline-any cline-yes">1x</span>
410
- <span class="cline-any cline-no">&nbsp;</span>
411
297
  <span class="cline-any cline-neutral">&nbsp;</span>
412
298
  <span class="cline-any cline-neutral">&nbsp;</span>
413
299
  <span class="cline-any cline-yes">1x</span>
414
- <span class="cline-any cline-no">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
300
  <span class="cline-any cline-neutral">&nbsp;</span>
417
301
  <span class="cline-any cline-yes">1x</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-yes">1x</span>
420
303
  <span class="cline-any cline-neutral">&nbsp;</span>
421
304
  <span class="cline-any cline-yes">1x</span>
422
- <span class="cline-any cline-no">&nbsp;</span>
305
+ <span class="cline-any cline-yes">1x</span>
423
306
  <span class="cline-any cline-neutral">&nbsp;</span>
424
307
  <span class="cline-any cline-neutral">&nbsp;</span>
425
308
  <span class="cline-any cline-yes">1x</span>
426
309
  <span class="cline-any cline-no">&nbsp;</span>
427
310
  <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-yes">1x</span>
431
311
  <span class="cline-any cline-yes">1x</span>
432
312
  <span class="cline-any cline-neutral">&nbsp;</span>
433
313
  <span class="cline-any cline-yes">1x</span>
434
- <span class="cline-any cline-no">&nbsp;</span>
435
- <span class="cline-any cline-no">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&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-no">&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-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-yes">1x</span>
464
315
  <span class="cline-any cline-neutral">&nbsp;</span>
465
316
  <span class="cline-any cline-neutral">&nbsp;</span>
466
317
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -474,66 +325,14 @@
474
325
  <span class="cline-any cline-neutral">&nbsp;</span>
475
326
  <span class="cline-any cline-neutral">&nbsp;</span>
476
327
  <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
328
  <span class="cline-any cline-yes">1x</span>
480
329
  <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <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-yes">1x</span>
493
330
  <span class="cline-any cline-yes">1x</span>
494
331
  <span class="cline-any cline-neutral">&nbsp;</span>
495
332
  <span class="cline-any cline-neutral">&nbsp;</span>
496
333
  <span class="cline-any cline-neutral">&nbsp;</span>
497
- <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
- <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-yes">1x</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
334
  <span class="cline-any cline-no">&nbsp;</span>
508
335
  <span class="cline-any cline-no">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&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-yes">1x</span>
522
- <span class="cline-any cline-yes">1x</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</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-yes">1x</span>
537
336
  <span class="cline-any cline-no">&nbsp;</span>
538
337
  <span class="cline-any cline-neutral">&nbsp;</span>
539
338
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -542,70 +341,62 @@
542
341
  <span class="cline-any cline-neutral">&nbsp;</span>
543
342
  <span class="cline-any cline-neutral">&nbsp;</span>
544
343
  <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <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-yes">1x</span>
344
+ <span class="cline-any cline-no">&nbsp;</span>
551
345
  <span class="cline-any cline-no">&nbsp;</span>
552
346
  <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-no">&nbsp;</span>
553
348
  <span class="cline-any cline-neutral">&nbsp;</span>
554
349
  <span class="cline-any cline-neutral">&nbsp;</span>
555
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>
556
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>
557
356
  <span class="cline-any cline-neutral">&nbsp;</span>
558
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-no">&nbsp;</span>
559
359
  <span class="cline-any cline-neutral">&nbsp;</span>
560
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
561
362
  <span class="cline-any cline-neutral">&nbsp;</span>
562
363
  <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</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-yes">1x</span>
364
+ <span class="cline-any cline-no">&nbsp;</span>
578
365
  <span class="cline-any cline-no">&nbsp;</span>
579
366
  <span class="cline-any cline-neutral">&nbsp;</span>
580
367
  <span class="cline-any cline-neutral">&nbsp;</span>
581
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>
582
371
  <span class="cline-any cline-neutral">&nbsp;</span>
583
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>
584
375
  <span class="cline-any cline-neutral">&nbsp;</span>
585
376
  <span class="cline-any cline-neutral">&nbsp;</span>
586
377
  <span class="cline-any cline-neutral">&nbsp;</span>
587
378
  <span class="cline-any cline-neutral">&nbsp;</span>
588
379
  <span class="cline-any cline-neutral">&nbsp;</span>
589
380
  <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-yes">1x</span>
381
+ <span class="cline-any cline-no">&nbsp;</span>
592
382
  <span class="cline-any cline-no">&nbsp;</span>
593
383
  <span class="cline-any cline-neutral">&nbsp;</span>
594
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>
595
388
  <span class="cline-any cline-neutral">&nbsp;</span>
596
389
  <span class="cline-any cline-neutral">&nbsp;</span>
597
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-no">&nbsp;</span>
598
392
  <span class="cline-any cline-neutral">&nbsp;</span>
599
393
  <span class="cline-any cline-neutral">&nbsp;</span>
600
394
  <span class="cline-any cline-neutral">&nbsp;</span>
601
395
  <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-yes">1x</span>
606
396
  <span class="cline-any cline-no">&nbsp;</span>
607
397
  <span class="cline-any cline-neutral">&nbsp;</span>
608
398
  <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
609
400
  <span class="cline-any cline-neutral">&nbsp;</span>
610
401
  <span class="cline-any cline-neutral">&nbsp;</span>
611
402
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -620,12 +411,13 @@
620
411
  <span class="cline-any cline-neutral">&nbsp;</span>
621
412
  <span class="cline-any cline-neutral">&nbsp;</span>
622
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>
623
416
  <span class="cline-any cline-neutral">&nbsp;</span>
624
417
  <span class="cline-any cline-neutral">&nbsp;</span>
625
418
  <span class="cline-any cline-neutral">&nbsp;</span>
626
419
  <span class="cline-any cline-neutral">&nbsp;</span>
627
420
  <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-yes">1x</span>
629
421
  <span class="cline-any cline-neutral">&nbsp;</span>
630
422
  <span class="cline-any cline-neutral">&nbsp;</span>
631
423
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -635,6 +427,7 @@
635
427
  <span class="cline-any cline-neutral">&nbsp;</span>
636
428
  <span class="cline-any cline-neutral">&nbsp;</span>
637
429
  <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-no">&nbsp;</span>
638
431
  <span class="cline-any cline-neutral">&nbsp;</span>
639
432
  <span class="cline-any cline-neutral">&nbsp;</span>
640
433
  <span class="cline-any cline-yes">1x</span>
@@ -648,11 +441,6 @@
648
441
  <span class="cline-any cline-neutral">&nbsp;</span>
649
442
  <span class="cline-any cline-neutral">&nbsp;</span>
650
443
  <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-yes">1x</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
444
  <span class="cline-any cline-neutral">&nbsp;</span>
657
445
  <span class="cline-any cline-neutral">&nbsp;</span>
658
446
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -673,297 +461,187 @@
673
461
  <span class="cline-any cline-neutral">&nbsp;</span>
674
462
  <span class="cline-any cline-neutral">&nbsp;</span>
675
463
  <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <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';
679
466
  import cookie from 'cookie';
680
467
  import jwtDecode from 'jwt-decode';
468
+ import { EyeIcon } from '../../../lib/SvgComponents';
681
469
  import { NavLinkContainer, NavLinkInline, NavLinkDrawer } from '../Links';
682
470
  import AnimationGroup from '../AnimationGroup/AnimationGroup';
683
- import * as SVG from '../../../lib/SvgComponents';
471
+ import defaultContent from '../UI/default-content';
684
472
  import {
685
- physicianCompareUrl,
686
- facilityBasedPreviewUrl,
687
- feedbackUrl,
688
- reportsPortalUrl,
473
+ loadUserPermissions,
474
+ getUrlConditionMap,
475
+ isMultiRoleUser,
476
+ getIcon,
477
+ isImpersonating,
478
+ isImpersonationLink,
479
+ loadSideNavContent,
689
480
  } from '../helpers';
690
- import PropTypes from 'prop-types';
481
+ import SelectRole from './SelectRole';
691
482
  &nbsp;
692
483
  const LevelOneContent = ({
693
484
  isExpanded,
694
- showDevPreDfpLink,
695
- showPhysicianCompareLink,
696
- showFacilityBasedPreviewLink,
697
- showApmIncentivePaymentLink,
698
- performanceYear,
699
- fbpPerformanceYear,
700
- showSelfNomination,
701
485
  config: { linkCallback, useTooltips } = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
702
- showReportsPortal,
703
- showTargetedReviewLink,
486
+ levelOneContent,
704
487
  }) =&gt; {
705
- let name = '';
706
- let hasAuthorizations = true;
707
- let isDevPre = false;
708
- let ehrAuthorized = false;
709
- let hasApmPayments = false;
710
- let hasNonRegistryAuthorizations = false;
711
- let cookies = cookie.parse(document.cookie);
488
+ let { qpp_is_dev_pre, qpp_auth_token } = cookie.parse(document.cookie);
712
489
  &nbsp;
713
- <span class="missing-if-branch" title="else path not taken" >E</span>if (cookies.hasOwnProperty('qpp_auth_token')) {
714
- const { data } = jwtDecode(cookies.qpp_auth_token);
715
- name = `${data.firstName} ${data.lastName}`;
716
- }
490
+ const [selectedRole, setSelectedRole] = useState('');
717
491
  &nbsp;
718
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_has_authorizations')) {
719
- <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}`;
720
496
  }
721
497
  &nbsp;
722
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('user_has_apm_payments')) {
723
- <span class="cstat-no" title="statement not covered" > hasApmPayments = cookies.user_has_apm_payments === 'true';</span>
724
- }
498
+ const linkClass = isExpanded ? 'link-inline' : <span class="branch-1 cbranch-no" title="branch not covered" >'link-collapsed';</span>
725
499
  &nbsp;
726
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_is_dev_pre')) {
727
- <span class="cstat-no" title="statement not covered" > isDevPre = cookies.qpp_is_dev_pre === 'true';</span>
728
- }
500
+ const permissions = loadUserPermissions(document.cookie, selectedRole);
501
+ const { internalReviewerNames } = permissions;
729
502
  &nbsp;
730
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_ehr_authorized')) {
731
- <span class="cstat-no" title="statement not covered" > ehrAuthorized = cookies.qpp_ehr_authorized === 'true';</span>
732
- }
503
+ const hasMultipleRoles = isMultiRoleUser(document.cookie);
504
+ const isDevPre = qpp_is_dev_pre === 'true';
505
+ let content;
733
506
  &nbsp;
734
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cookies.hasOwnProperty('qpp_has_non_registry_authorizations')) {
735
- <span class="cstat-no" title="statement not covered" > hasNonRegistryAuthorizations =</span>
736
- 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
+ }
737
524
  }
738
525
  &nbsp;
739
- const linkClass = isExpanded ? 'link-inline' : <span class="branch-1 cbranch-no" title="branch not covered" >'link-collapsed';</span>
740
- const listOfLinks = [];
526
+ // Mapping side nav link urls to the conditions that determine their inclusion in the side nav
527
+ const urlConditionMap = getUrlConditionMap(permissions);
741
528
  &nbsp;
742
- <span class="missing-if-branch" title="if path not taken" >I</span>if (isDevPre) {
743
- <span class="cstat-no" title="statement not covered" > if (ehrAuthorized) {</span>
744
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
745
- &lt;NavLinkInline
746
- icon={&lt;SVG.MyApplicationsIcon /&gt;}
747
- className={linkClass}
748
- url="/user/applications"
749
- label="My Applications"
750
- showLabel={isExpanded}
751
- useTooltips={useTooltips}
752
- /&gt;
753
- );
754
- <span class="cstat-no" title="statement not covered" > if (showDevPreDfpLink) {</span>
755
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
756
- &lt;NavLinkInline
757
- icon={&lt;SVG.MyTestDataIcon /&gt;}
758
- className={linkClass}
759
- url="/user/test-data"
760
- label="My Test Data"
761
- showLabel={isExpanded}
762
- useTooltips={useTooltips}
763
- /&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'
764
538
  );
765
539
  }
766
- }
767
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
768
- &lt;NavLinkInline
769
- icon={&lt;SVG.ManageUsersIcon /&gt;}
770
- className={linkClass}
771
- url="/user/manage-access"
772
- label="Manage Access"
773
- showLabel={isExpanded}
774
- useTooltips={useTooltips}
775
- /&gt;
776
- );
777
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
778
- &lt;NavLinkInline
779
- icon={&lt;SVG.HelpSupportIcon /&gt;}
780
- className={linkClass}
781
- url="/developers"
782
- label="Developer Tools"
783
- showLabel={isExpanded}
784
- useTooltips={useTooltips}
785
- /&gt;
786
- );
787
- } else {
788
- listOfLinks.push(
789
- &lt;NavLinkInline
790
- key="account-dashboard-link"
791
- icon={&lt;SVG.AccountHomeIcon /&gt;}
792
- className={linkClass}
793
- url="/user/submissions"
794
- label="Account Home"
795
- linkCallback={linkCallback}
796
- showLabel={isExpanded}
797
- useTooltips={useTooltips}
798
- /&gt;
799
- );
800
540
  &nbsp;
801
- <span class="missing-if-branch" title="else path not taken" >E</span>if (hasAuthorizations) {
802
- listOfLinks.push(
803
- &lt;NavLinkInline
804
- key="eligibility-link"
805
- icon={&lt;SVG.DashboardIcon /&gt;}
806
- className={linkClass}
807
- url="/user/dashboard"
808
- label="Eligibility &amp; Reporting"
809
- showLabel={isExpanded}
810
- useTooltips={useTooltips}
811
- /&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'
812
548
  );
813
549
  &nbsp;
814
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showFacilityBasedPreviewLink) {
815
- const facilityBasedPreviewUrlYear =
816
- <span class="cstat-no" title="statement not covered" > fbpPerformanceYear || performanceYear;</span>
817
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
818
- &lt;NavLinkInline
819
- icon={&lt;SVG.FacilityBasedPreviewIcon /&gt;}
820
- className={linkClass}
821
- url={facilityBasedPreviewUrl(facilityBasedPreviewUrlYear)}
822
- label="Facility Based Preview"
823
- linkCallback={linkCallback}
824
- showLabel={isExpanded}
825
- useTooltips={useTooltips}
826
- /&gt;
827
- );
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>
828
555
  }
829
556
  &nbsp;
830
- <span class="missing-if-branch" title="else path not taken" >E</span>if (performanceYear) {
831
- listOfLinks.push(
832
- &lt;NavLinkInline
833
- icon={&lt;SVG.StarIcon /&gt;}
834
- className={linkClass}
835
- urlExpressionToMatch={`${feedbackUrl}/[0-9][0-9][0-9][0-9]`}
836
- url={feedbackUrl}
837
- label="Performance Feedback"
838
- linkCallback={linkCallback}
839
- showLabel={isExpanded}
840
- useTooltips={useTooltips}
841
- /&gt;
842
- );
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>
843
565
  }
844
566
  &nbsp;
845
- <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> {
846
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
847
- &lt;NavLinkInline
848
- icon={&lt;SVG.PaymentIcon /&gt;}
849
- className={linkClass}
850
- url="/user/apm-incentive-payments"
851
- label="APM Incentive Payments"
852
- linkCallback={linkCallback}
853
- showLabel={isExpanded}
854
- useTooltips={useTooltips}
855
- /&gt;
856
- );
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>
857
582
  }
858
583
  &nbsp;
859
- <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> {
860
- <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>
861
615
  &lt;NavLinkInline
862
- icon={&lt;SVG.PhysicianCompareIcon /&gt;}
863
- className={linkClass}
864
- url={physicianCompareUrl}
865
- label="Doctors &amp; Clinicians Preview"
866
- linkCallback={linkCallback}
867
- 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)}
868
622
  useTooltips={useTooltips}
623
+ showLabel={isExpanded}
624
+ {...sharedProps}
625
+ {...rest}
869
626
  /&gt;
870
627
  );
871
628
  }
872
- }
629
+ <span class="cstat-no" title="statement not covered" > return acc;</span>
630
+ }, []);
873
631
  &nbsp;
874
- listOfLinks.push(
875
- &lt;NavLinkInline
876
- icon={&lt;SVG.HardshipIcon /&gt;}
877
- className={linkClass}
878
- url="/user/exception/#/landing"
879
- label="Exceptions Application"
880
- linkCallback={linkCallback}
881
- showLabel={isExpanded}
882
- useTooltips={useTooltips}
883
- /&gt;
884
- );
885
- &nbsp;
886
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showTargetedReviewLink) {
887
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
888
- &lt;NavLinkInline
889
- icon={&lt;SVG.TargetIcon /&gt;}
890
- className={linkClass + ' stroke-based-icon'}
891
- url="/user/targeted-review/#/landing"
892
- label="Targeted Review"
893
- linkCallback={linkCallback}
894
- showLabel={isExpanded}
895
- useTooltips={useTooltips}
896
- /&gt;
897
- );
898
- }
899
- &nbsp;
900
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showReportsPortal) {
901
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
902
- &lt;NavLinkInline
903
- icon={&lt;SVG.HardshipIcon /&gt;}
904
- className={linkClass}
905
- url={reportsPortalUrl}
906
- label="Reports"
907
- linkCallback={linkCallback}
908
- showLabel={isExpanded}
909
- useTooltips={useTooltips}
910
- /&gt;
911
- );
912
- }
913
- &nbsp;
914
- <span class="missing-if-branch" title="if path not taken" >I</span>if (showSelfNomination) {
915
- <span class="cstat-no" title="statement not covered" > listOfLinks.push(</span>
916
- &lt;NavLinkDrawer
917
- key="connected-clinicians-link"
918
- isAlwaysOpen
919
- url="/user/manage-access"
920
- isExpanded={isExpanded}
921
- openByDefault={true}
922
- leftIcon={&lt;SVG.ManageUsersIcon /&gt;}
923
- className={linkClass}
924
- label="Manage Access"
925
- linkCallback={linkCallback}
926
- listOfLinks={[
927
- {
928
- url: '/user/self-nomination/#/landing',
929
- label: 'Registry/QCDR Self-Nomination',
930
- items: [],
931
- },
932
- ]}
933
- staticDrawer={false}
934
- /&gt;
935
- );
936
- } else {
937
- listOfLinks.push(
938
- &lt;NavLinkInline
939
- icon={&lt;SVG.ManageUsersIcon /&gt;}
940
- className={linkClass}
941
- url="/user/manage-access"
942
- label="Manage Access"
943
- showLabel={isExpanded}
944
- useTooltips={useTooltips}
945
- /&gt;
946
- );
947
- }
948
- &nbsp;
949
- listOfLinks.push(
950
- &lt;NavLinkInline
951
- icon={&lt;SVG.HelpSupportIcon /&gt;}
952
- className={linkClass}
953
- url="/about/help-and-support"
954
- label="Help and Support"
955
- showLabel={isExpanded}
956
- useTooltips={useTooltips}
957
- /&gt;
958
- );
959
- }
960
632
  return (
961
633
  &lt;div className="sidebar-content"&gt;
962
634
  &lt;AnimationGroup display={isExpanded}&gt;
963
635
  &lt;h1 className="label"&gt;{name}&lt;/h1&gt;
964
636
  &lt;/AnimationGroup&gt;
965
637
  &lt;div className="level-one-nav animation-flat"&gt;
966
- &lt;NavLinkContainer listOfLinks={listOfLinks} /&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;
967
645
  &lt;/div&gt;
968
646
  &lt;/div&gt;
969
647
  );
@@ -972,15 +650,13 @@ const LevelOneContent = ({
972
650
  LevelOneContent.propTypes = {
973
651
  isExpanded: PropTypes.bool,
974
652
  config: PropTypes.object,
975
- showDevPreDfpLink: PropTypes.bool,
976
- showPhysicianCompareLink: PropTypes.bool,
977
- showFacilityBasedPreviewLink: PropTypes.bool,
978
- showApmIncentivePaymentLink: PropTypes.bool,
979
- performanceYear: PropTypes.string,
980
- fbpPerformanceYear: PropTypes.string,
981
- showSelfNomination: PropTypes.bool,
982
- showReportsPortal: PropTypes.bool,
983
- 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
+ }),
984
660
  };
985
661
  &nbsp;
986
662
  export default LevelOneContent;
@@ -990,10 +666,9 @@ export default LevelOneContent;
990
666
  </div><!-- /wrapper -->
991
667
  <div class='footer quiet pad2 space-top1 center small'>
992
668
  Code coverage generated by
993
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
994
- at Thu Jan 21 2021 15:11:19 GMT-0800 (Pacific Standard 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)
995
671
  </div>
996
- </div>
997
672
  <script src="../../../../prettify.js"></script>
998
673
  <script>
999
674
  window.onload = function () {