qpp-style 9.18.2-mo-beta.0 → 9.19.0

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 (186) hide show
  1. package/components/Header/HeaderAccountMenu.jsx +10 -85
  2. package/components/Header/HeaderUI.jsx +53 -61
  3. package/components/Header/hooks.js +16 -2
  4. package/components/NotificationBanner/CollapsedView.js +29 -22
  5. package/coverage/clover.xml +424 -377
  6. package/coverage/coverage-final.json +73 -71
  7. package/coverage/lcov-report/components/Accordion/index.html +1 -1
  8. package/coverage/lcov-report/components/Accordion/index.jsx.html +4 -4
  9. package/coverage/lcov-report/components/{SideNav/AnimationGroup → Button}/index.html +30 -30
  10. package/coverage/lcov-report/components/{SideNav/Links/NavLinkInline.jsx.html → Button/index.js.html} +101 -152
  11. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +1 -1
  12. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +1 -1
  13. package/coverage/lcov-report/components/Error/index.html +1 -1
  14. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +184 -358
  15. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +11 -11
  16. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +11 -11
  17. package/coverage/lcov-report/components/Footer/index.html +29 -44
  18. package/coverage/lcov-report/components/{SideNav/UI → GovBanner}/index.html +27 -42
  19. package/coverage/lcov-report/components/GovBanner/index.js.html +436 -0
  20. package/coverage/lcov-report/components/{SideNav/Content/LevelOneContent.jsx.html → Header/HeaderAccountMenu.jsx.html} +187 -304
  21. package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Header/HeaderCancel.jsx.html} +18 -24
  22. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
  23. package/coverage/lcov-report/components/{SideNav/Links/NavLinkContainer.jsx.html → Header/HeaderLogo.jsx.html} +72 -60
  24. package/coverage/lcov-report/components/{SideNav/Links/NavItemInline.jsx.html → Header/HeaderMenuButton.js.html} +63 -75
  25. package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → Header/HeaderMenuItem.jsx.html} +305 -236
  26. package/coverage/lcov-report/components/{SideNav/Details/PracticeDetails.jsx.html → Header/HeaderMenuLink.js.html} +78 -63
  27. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  28. package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +196 -0
  29. package/coverage/lcov-report/components/{Footer/LegacyFooterUI.jsx.html → Header/HeaderUI.jsx.html} +193 -274
  30. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  31. package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +331 -0
  32. package/coverage/lcov-report/components/{SideNav/AnimationGroup/AnimationGroup.jsx.html → Header/NavigationButtonIcon.jsx.html} +48 -48
  33. package/coverage/lcov-report/components/Header/hooks.js.html +241 -0
  34. package/coverage/lcov-report/components/Header/index.html +326 -0
  35. package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +28 -40
  36. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +2 -2
  37. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +5 -5
  38. package/coverage/lcov-report/components/Infotip/index.html +1 -1
  39. package/coverage/lcov-report/components/Infotip/index.js.html +1 -1
  40. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +3 -3
  41. package/coverage/lcov-report/components/Modal/Modal.jsx.html +5 -5
  42. package/coverage/lcov-report/components/Modal/index.html +1 -1
  43. package/coverage/lcov-report/components/Modal/index.jsx.html +5 -5
  44. package/coverage/lcov-report/components/{SideNav/Chart → NotificationBanner}/index.html +30 -45
  45. package/coverage/lcov-report/components/{SideNav/Links/NavLinkDrawer.jsx.html → NotificationBanner/index.js.html} +318 -270
  46. package/coverage/lcov-report/components/SanitizedContent/index.html +1 -1
  47. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +1 -1
  48. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +4 -4
  49. package/coverage/lcov-report/components/SideNav/helpers.js.html +649 -10
  50. package/coverage/lcov-report/components/SideNav/index.html +17 -17
  51. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +8 -8
  52. package/coverage/lcov-report/components/Tooltip/index.html +1 -1
  53. package/coverage/lcov-report/components/Tooltip/index.js.html +1 -1
  54. package/coverage/lcov-report/components/Tooltip/position.js.html +1 -1
  55. package/coverage/lcov-report/components/hooks/index.html +19 -19
  56. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +39 -36
  57. package/coverage/lcov-report/components/index.html +1 -1
  58. package/coverage/lcov-report/index.html +73 -73
  59. package/coverage/lcov-report/lib/Chevron.jsx.html +5 -5
  60. package/coverage/lcov-report/lib/SvgComponents.jsx.html +54 -12
  61. package/coverage/lcov-report/lib/index.html +15 -30
  62. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  63. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  64. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  65. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  66. package/coverage/lcov-report/react/components/Dropdown/index.html +1 -1
  67. package/coverage/lcov-report/react/components/Dropdown/index.js.html +1 -1
  68. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  69. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  70. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  71. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  72. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +1 -1
  73. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +1 -1
  74. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +1 -1
  75. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  76. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  77. package/coverage/lcov-report/react/components/GovBanner/index.html +1 -1
  78. package/coverage/lcov-report/react/components/GovBanner/index.js.html +3 -3
  79. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +26 -251
  80. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +1 -1
  81. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +2 -2
  82. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +4 -4
  83. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +1 -1
  84. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +19 -19
  85. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +26 -8
  86. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +1 -1
  87. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +2 -2
  88. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +89 -113
  89. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +2 -2
  90. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +5 -5
  91. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +1 -1
  92. package/coverage/lcov-report/react/components/Header/header.js.html +1 -1
  93. package/coverage/lcov-report/react/components/Header/hooks.js.html +59 -17
  94. package/coverage/lcov-report/react/components/Header/index.html +36 -36
  95. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +1 -1
  96. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +1 -1
  97. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  98. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  99. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  100. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +1 -1
  101. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +1 -1
  102. package/coverage/lcov-report/react/components/Modal/index.html +1 -1
  103. package/coverage/lcov-report/react/components/Modal/index.jsx.html +1 -1
  104. package/coverage/lcov-report/{components/SideNav/Links/NavLinkToggle.jsx.html → react/components/NotificationBanner/CollapsedView.js.html} +40 -46
  105. package/coverage/lcov-report/{components/SideNav/Links/CmsSwitchLink.jsx.html → react/components/NotificationBanner/ExpandedView.js.html} +55 -43
  106. package/coverage/lcov-report/react/components/NotificationBanner/index.html +51 -21
  107. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +168 -300
  108. package/coverage/lcov-report/react/components/SanitizedContent/index.html +1 -1
  109. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +1 -1
  110. package/coverage/lcov-report/react/components/SessionDialog/index.html +1 -1
  111. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +1 -1
  112. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +1 -1
  113. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +1 -1
  114. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +1 -1
  115. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +1 -1
  116. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +1 -1
  117. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +1 -1
  118. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +109 -31
  119. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +1 -1
  120. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +14 -14
  121. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +10 -16
  122. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +51 -27
  123. package/coverage/lcov-report/react/components/SideNav/Content/index.html +19 -19
  124. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +1 -1
  125. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +1 -1
  126. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +1 -1
  127. package/coverage/lcov-report/react/components/SideNav/Details/index.html +1 -1
  128. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +1 -1
  129. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +1 -1
  130. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +1 -1
  131. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +1 -1
  132. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +2 -2
  133. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +1 -1
  134. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +1 -1
  135. package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
  136. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +1 -1
  137. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +8 -2
  138. package/coverage/lcov-report/react/components/SideNav/UI/index.html +1 -1
  139. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +1 -1
  140. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +197 -17
  141. package/coverage/lcov-report/react/components/SideNav/index.html +19 -19
  142. package/coverage/lcov-report/react/components/SideNav/index.js.html +1 -1
  143. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  144. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  145. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  146. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  147. package/coverage/lcov-report/react/components/hooks/index.html +19 -19
  148. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +37 -37
  149. package/coverage/lcov-report/react/components/index.html +1 -1
  150. package/coverage/lcov-report/react/index.html +1 -1
  151. package/coverage/lcov-report/react/index.js.html +1 -1
  152. package/coverage/lcov-report/react/lib/Chevron.jsx.html +2 -2
  153. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +57 -9
  154. package/coverage/lcov-report/react/lib/index.html +14 -14
  155. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +1 -1
  156. package/coverage/lcov-report/react/session/index.html +1 -1
  157. package/coverage/lcov-report/react/session/index.js.html +1 -1
  158. package/coverage/lcov-report/react/session/logout.js.html +1 -1
  159. package/coverage/lcov-report/react/session/refresh.js.html +1 -1
  160. package/coverage/lcov-report/react/session/ttl.js.html +1 -1
  161. package/coverage/lcov-report/session/index.html +20 -20
  162. package/coverage/lcov-report/session/index.js.html +1 -1
  163. package/coverage/lcov-report/session/logout.js.html +24 -15
  164. package/coverage/lcov-report/session/refresh.js.html +2 -2
  165. package/coverage/lcov-report/session/ttl.js.html +2 -2
  166. package/coverage/lcov.info +699 -612
  167. package/dist/browser.js +1 -1
  168. package/dist/browser.js.map +1 -1
  169. package/dist/index.js +1 -1
  170. package/dist/index.js.map +1 -1
  171. package/dist/react/index.js +1 -1
  172. package/dist/react/index.js.map +1 -1
  173. package/images/icons/svg/registration.svg +8 -0
  174. package/package.json +1 -1
  175. package/styles/qppds/components/_header.scss +1 -1
  176. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +0 -889
  177. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -94
  178. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -146
  179. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -97
  180. package/coverage/lcov-report/components/SideNav/Details/index.html +0 -146
  181. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -97
  182. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -206
  183. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1084
  184. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -94
  185. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -460
  186. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +0 -667
@@ -1,45 +1,23 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import cookie from 'cookie';
4
- import jwtDecode from 'jwt-decode';
5
-
6
3
  import { useHeaderState } from './hooks';
7
4
  import { setUtagLink } from './utag-helpers';
8
5
  import SessionDialogUI from '../SessionDialogUI';
9
- import {
10
- performanceFeedbackUrl,
11
- physicianCompareUrl,
12
- dashboardUrl,
13
- manageUrl,
14
- submissionsUrl,
15
- facilityBasedPreviewUrl,
16
- } from '../SideNav/helpers';
17
6
  import HeaderMenuItem from './HeaderMenuItem';
18
7
 
19
- const HeaderAccountMenu = ({
20
- handleClick,
21
- fbpPerformanceYear,
22
- feedbackPerformanceYear,
23
- isLoginEnabled,
24
- isDevPre,
25
- performanceYear,
26
- showFacilityBasedPreviewLink,
27
- showPhysicianCompareLink,
28
- }) => {
29
- const cookies = cookie.parse(document.cookie);
30
- const hasAuthToken = cookies.hasOwnProperty('qpp_auth_token');
31
- const hasAuthorizations = cookies.qpp_has_authorizations === 'true';
32
- const hasNonRegistryAuthorizations =
33
- cookies.qpp_has_non_registry_authorizations === 'true';
34
- const isDevPreAndNotAuthenticated = !hasAuthToken && isDevPre;
35
- const { closeMenus, RouterLink } = useHeaderState();
8
+ const HeaderAccountMenu = ({ handleClick, isLoginEnabled, isDevPre }) => {
9
+ const { closeMenus, RouterLink, headerContent } = useHeaderState();
10
+ const { isLoggedIn, firstName, devPreMenuLinks, accountMenuLinks } =
11
+ headerContent;
12
+
13
+ const isDevPreAndNotAuthenticated = !isLoggedIn && isDevPre;
36
14
 
37
15
  if (!isLoginEnabled || isDevPreAndNotAuthenticated) {
38
16
  return null;
39
17
  }
40
18
 
41
19
  // login link
42
- if (!hasAuthToken) {
20
+ if (!isLoggedIn) {
43
21
  if (RouterLink) {
44
22
  return (
45
23
  <li onClick={handleClick} className="header-item-login login">
@@ -85,50 +63,7 @@ const HeaderAccountMenu = ({
85
63
  );
86
64
  }
87
65
 
88
- if (hasAuthToken) {
89
- const { firstName } = jwtDecode(cookies.qpp_auth_token);
90
- const additionalLinks = [];
91
- if (hasAuthorizations) {
92
- additionalLinks.push(
93
- { type: 'link', href: dashboardUrl, name: 'Eligibility & Reporting' },
94
- {
95
- type: 'link',
96
- href: performanceFeedbackUrl(
97
- feedbackPerformanceYear || performanceYear
98
- ),
99
- name: 'Performance Feedback',
100
- }
101
- );
102
- if (showPhysicianCompareLink && hasNonRegistryAuthorizations) {
103
- additionalLinks.push({
104
- type: 'link',
105
- href: physicianCompareUrl,
106
- name: 'Doctors & Clinicians Preview',
107
- });
108
- }
109
- if (showFacilityBasedPreviewLink) {
110
- additionalLinks.push({
111
- type: 'link',
112
- href: facilityBasedPreviewUrl(fbpPerformanceYear || performanceYear),
113
- name: 'Facility Based Preview',
114
- });
115
- }
116
- }
117
- const columns = [
118
- [
119
- {
120
- items: [
121
- { type: 'link', href: submissionsUrl, name: 'Account Home' },
122
- ...additionalLinks,
123
- { type: 'link', href: manageUrl, name: 'Manage Access' },
124
- { type: 'signout', name: 'Sign Out' },
125
- ],
126
- },
127
- ],
128
- ];
129
- const devPreColumns = [
130
- [{ items: [{ type: 'signout', name: 'Sign Out' }] }],
131
- ];
66
+ if (isLoggedIn) {
132
67
  return (
133
68
  <>
134
69
  <SessionDialogUI />
@@ -138,8 +73,8 @@ const HeaderAccountMenu = ({
138
73
  name={firstName}
139
74
  subtitle="My Account"
140
75
  className="account-menu-item"
141
- columns={isDevPre ? devPreColumns : columns}
142
- rows={isDevPre ? devPreColumns : columns}
76
+ columns={isDevPre ? devPreMenuLinks : accountMenuLinks}
77
+ rows={isDevPre ? devPreMenuLinks : accountMenuLinks}
143
78
  />
144
79
  </>
145
80
  );
@@ -148,21 +83,11 @@ const HeaderAccountMenu = ({
148
83
 
149
84
  HeaderAccountMenu.propTypes = {
150
85
  isLoginEnabled: PropTypes.bool.isRequired,
151
- showPhysicianCompareLink: PropTypes.bool,
152
- showFacilityBasedPreviewLink: PropTypes.bool,
153
- performanceYear: PropTypes.number,
154
- fbpPerformanceYear: PropTypes.string,
155
- feedbackPerformanceYear: PropTypes.string,
156
86
  isDevPre: PropTypes.bool,
157
87
  handleClick: PropTypes.func.isRequired,
158
88
  };
159
89
 
160
90
  HeaderAccountMenu.defaultProps = {
161
- showPhysicianCompareLink: false,
162
- showFacilityBasedPreviewLink: false,
163
- performanceYear: 2017,
164
- fbpPerformanceYear: null,
165
- feedbackPerformanceYear: null,
166
91
  isDevPre: false,
167
92
  };
168
93
 
@@ -1,6 +1,6 @@
1
- import React, { useState } from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
-
3
+ import axios from 'axios';
4
4
  import HeaderAccountMenu from './HeaderAccountMenu.jsx';
5
5
  import HeaderCancel from './HeaderCancel.jsx';
6
6
  import HeaderContainer from './HeaderContainer';
@@ -8,26 +8,20 @@ import HeaderMenuItem from './HeaderMenuItem';
8
8
  import HeaderMobileButton from './HeaderMobileButton';
9
9
  import ImpersonatorBanner from './ImpersonatorBanner';
10
10
  import HelpIcon from './HelpIcon';
11
- import defaultHeaderContent from './default-content.json';
12
11
  import { HeaderStateProvider } from './hooks';
13
- import useGetConfig from '../hooks/useGetConfig';
14
12
 
15
13
  const HeaderUI = ({
16
- fbpPerformanceYear,
17
- feedbackPerformanceYear,
18
14
  handleCancel,
19
15
  includeSkipToSidebar,
20
16
  isDevPre,
21
17
  isLoginEnabled,
22
- performanceYear,
23
18
  showCancelButton,
24
- showPhysicianCompareLink,
25
- showFacilityBasedPreviewLink,
26
19
  skipToContentId,
27
20
  RouterLink,
28
21
  isIESupportPage,
29
22
  }) => {
30
23
  const [isMobileMenuExpanded, setIsMobileMenuExpanded] = useState(false);
24
+ const [headerContent, setHeaderContent] = useState({});
31
25
 
32
26
  const mapContentToRows = (config) => {
33
27
  // Append transposed array to content
@@ -47,53 +41,47 @@ const HeaderUI = ({
47
41
  });
48
42
  };
49
43
 
50
- const result = useGetConfig({
51
- localStorageName: 'qpp_top_nav_content',
52
- url: '/config/header',
53
- timeout: 30,
54
- defaultContent: defaultHeaderContent,
55
- });
56
-
57
- const content = mapContentToRows(result?.content);
44
+ // execute on init render
45
+ useEffect(async () => {
46
+ let cancelRequest = false;
47
+ const { origin } = window.location;
48
+ const {
49
+ data: { data: navMenuItems },
50
+ } = await axios.get(`${origin}/config/header`);
51
+ if (!cancelRequest) setHeaderContent(navMenuItems);
52
+ return () => {
53
+ cancelRequest = true;
54
+ };
55
+ }, []);
58
56
 
59
- if (showCancelButton) {
60
- return (
61
- <HeaderStateProvider RouterLink={RouterLink}>
62
- <HeaderContainer
63
- showCancelButton
64
- skipToContentId={skipToContentId}
65
- includeSkipToSidebar={includeSkipToSidebar}
66
- >
67
- <HeaderCancel handleCancel={handleCancel} />
68
- </HeaderContainer>
69
- </HeaderStateProvider>
70
- );
71
- }
57
+ const content = mapContentToRows(headerContent?.content);
72
58
 
73
- if (isDevPre) {
74
- return (
75
- <HeaderStateProvider RouterLink={RouterLink}>
76
- <HeaderContainer
77
- isIESupportPage={isIESupportPage}
78
- skipToContentId={skipToContentId}
79
- includeSkipToSidebar={includeSkipToSidebar}
80
- >
81
- <nav aria-label="Primary navigation" hidden={!isMobileMenuExpanded}>
82
- <ul className="navigation-menu">
83
- <HeaderAccountMenu isDevPre isLoginEnabled={isLoginEnabled} />
84
- </ul>
85
- </nav>
86
- </HeaderContainer>
87
- </HeaderStateProvider>
88
- );
89
- }
59
+ const displayCancelContent = () => (
60
+ <HeaderContainer
61
+ showCancelButton
62
+ skipToContentId={skipToContentId}
63
+ includeSkipToSidebar={includeSkipToSidebar}
64
+ >
65
+ <HeaderCancel handleCancel={handleCancel} />
66
+ </HeaderContainer>
67
+ );
90
68
 
91
- if (!content) {
92
- return null;
93
- }
69
+ const displayDevPreContent = () => (
70
+ <HeaderContainer
71
+ isIESupportPage={isIESupportPage}
72
+ skipToContentId={skipToContentId}
73
+ includeSkipToSidebar={includeSkipToSidebar}
74
+ >
75
+ <nav aria-label="Primary navigation" hidden={!isMobileMenuExpanded}>
76
+ <ul className="navigation-menu">
77
+ <HeaderAccountMenu isDevPre isLoginEnabled={isLoginEnabled} />
78
+ </ul>
79
+ </nav>
80
+ </HeaderContainer>
81
+ );
94
82
 
95
- return (
96
- <HeaderStateProvider RouterLink={RouterLink}>
83
+ const displayHeaderContent = () => (
84
+ <>
97
85
  <HeaderContainer
98
86
  isIESupportPage={isIESupportPage}
99
87
  skipToContentId={skipToContentId}
@@ -118,24 +106,30 @@ const HeaderUI = ({
118
106
  ))}
119
107
  <HeaderAccountMenu
120
108
  handleClick={() => setIsMobileMenuExpanded(!isMobileMenuExpanded)}
121
- fbpPerformanceYear={fbpPerformanceYear}
122
- feedbackPerformanceYear={feedbackPerformanceYear}
123
109
  isLoginEnabled={isLoginEnabled}
124
- performanceYear={performanceYear}
125
- showPhysicianCompareLink={showPhysicianCompareLink}
126
- showFacilityBasedPreviewLink={showFacilityBasedPreviewLink}
127
110
  />
128
111
  </ul>
129
112
  </nav>
130
113
  </HeaderContainer>
131
114
  <ImpersonatorBanner />
115
+ </>
116
+ );
117
+
118
+ const displayContent = () => {
119
+ if (showCancelButton) return displayCancelContent();
120
+ if (isDevPre) return displayDevPreContent();
121
+ if (content?.length) return displayHeaderContent();
122
+ return null;
123
+ };
124
+
125
+ return (
126
+ <HeaderStateProvider RouterLink={RouterLink} headerContent={headerContent}>
127
+ {displayContent()}
132
128
  </HeaderStateProvider>
133
129
  );
134
130
  };
135
131
 
136
132
  HeaderUI.propTypes = {
137
- fbpPerformanceYear: PropTypes.string,
138
- feedbackPerformanceYear: PropTypes.string,
139
133
  handleCancel: PropTypes.func,
140
134
  includeSkipToSidebar: PropTypes.bool,
141
135
  isDevPre: PropTypes.bool,
@@ -149,8 +143,6 @@ HeaderUI.propTypes = {
149
143
  isIESupportPage: PropTypes.bool,
150
144
  };
151
145
  HeaderUI.defaultProps = {
152
- fbpPerformanceYear: null,
153
- feedbackPerformanceYear: null,
154
146
  handleCancel: Function.prototype,
155
147
  includeSkipToSidebar: false,
156
148
  isDevPre: false,
@@ -16,7 +16,11 @@ export function useWindowWidth() {
16
16
 
17
17
  export const HeaderStateContext = createContext(null);
18
18
 
19
- export const HeaderStateProvider = ({ children, RouterLink }) => {
19
+ export const HeaderStateProvider = ({
20
+ children,
21
+ RouterLink,
22
+ headerContent, // allow header content from api request available to all child components
23
+ }) => {
20
24
  const [currentOpenMenu, setCurrentOpenMenu] = useState('');
21
25
 
22
26
  const handleToggleMenu = (name) => {
@@ -27,18 +31,28 @@ export const HeaderStateProvider = ({ children, RouterLink }) => {
27
31
  };
28
32
 
29
33
  const closeMenus = () => setCurrentOpenMenu('');
34
+
30
35
  return (
31
36
  <HeaderStateContext.Provider
32
- value={{ currentOpenMenu, handleToggleMenu, closeMenus, RouterLink }}
37
+ value={{
38
+ currentOpenMenu,
39
+ handleToggleMenu,
40
+ closeMenus,
41
+ RouterLink,
42
+ headerContent,
43
+ }}
33
44
  >
34
45
  {children}
35
46
  </HeaderStateContext.Provider>
36
47
  );
37
48
  };
49
+
38
50
  HeaderStateProvider.propTypes = {
39
51
  children: PropTypes.node.isRequired,
40
52
  RouterLink: PropTypes.func,
53
+ headerContent: PropTypes.object,
41
54
  };
55
+
42
56
  HeaderStateProvider.defaultProps = {
43
57
  RouterLink: null,
44
58
  };
@@ -2,31 +2,38 @@ import React, { forwardRef } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { BellOutline } from '../../lib/SvgComponents.jsx';
4
4
 
5
- const CollapsedView = (
6
- { expandNotification, label },
7
- { collapsedWrapperRef, collapsedBannerRef }
8
- ) => {
9
- return (
10
- <div
11
- ref={collapsedWrapperRef}
12
- className={`notification-banner-wrapper collapsed-view`}
13
- onClick={expandNotification}
14
- >
15
- <button ref={collapsedBannerRef} className={`notification-banner-label`}>
16
- {label}
17
- <span className="bell-icon">
18
- <svg aria-hidden="true" focusable="false">
19
- <BellOutline />
20
- </svg>
21
- </span>
22
- </button>
23
- </div>
24
- );
25
- };
5
+ const CollapsedView = forwardRef(
6
+ (
7
+ { expandNotification, label },
8
+ { collapsedWrapperRef, collapsedBannerRef }
9
+ ) => {
10
+ return (
11
+ <div
12
+ ref={collapsedWrapperRef}
13
+ className={`notification-banner-wrapper collapsed-view`}
14
+ onClick={expandNotification}
15
+ >
16
+ <button
17
+ ref={collapsedBannerRef}
18
+ className={`notification-banner-label`}
19
+ >
20
+ {label}
21
+ <span className="bell-icon">
22
+ <svg aria-hidden="true" focusable="false">
23
+ <BellOutline />
24
+ </svg>
25
+ </span>
26
+ </button>
27
+ </div>
28
+ );
29
+ }
30
+ );
31
+
32
+ CollapsedView.displayName = 'CollapsedView';
26
33
 
27
34
  CollapsedView.propTypes = {
28
35
  expandNotification: PropTypes.func,
29
36
  label: PropTypes.string,
30
37
  };
31
38
 
32
- export default forwardRef(CollapsedView);
39
+ export default CollapsedView;