qpp-style 9.36.0 → 9.37.1
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.
- package/components/Footer/FooterUI.jsx +0 -1
- package/components/Header/HeaderContainer.jsx +16 -5
- package/components/Header/HeaderLogo.jsx +9 -7
- package/components/Header/HeaderUI.jsx +16 -13
- package/components/HeaderSearchBar/index.jsx +80 -0
- package/components/Session/Session.jsx +37 -47
- package/coverage/clover.xml +582 -619
- package/coverage/coverage-final.json +70 -70
- package/coverage/lcov-report/{InfotipContent.jsx.html → Tooltip.jsx.html} +38 -29
- package/coverage/lcov-report/components/Accordion/index.html +21 -21
- package/coverage/lcov-report/components/Accordion/index.jsx.html +115 -127
- package/coverage/lcov-report/components/Button/index.html +15 -15
- package/coverage/lcov-report/components/Button/index.js.html +136 -136
- package/coverage/lcov-report/components/Error/Collapsible.jsx.html +98 -98
- package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +33 -33
- package/coverage/lcov-report/components/Error/index.html +23 -23
- package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +224 -236
- package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +62 -62
- package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +36 -36
- package/coverage/lcov-report/components/Footer/index.html +13 -13
- package/coverage/lcov-report/components/GovBanner/index.html +21 -21
- package/coverage/lcov-report/components/GovBanner/index.js.html +236 -236
- package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +160 -160
- package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +23 -23
- package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +119 -119
- package/coverage/lcov-report/components/Header/HeaderLogo.jsx.html +81 -81
- package/coverage/lcov-report/components/Header/HeaderMenuButton.js.html +82 -82
- package/coverage/lcov-report/components/Header/HeaderMenuItem.jsx.html +423 -423
- package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +95 -95
- package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +97 -97
- package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +69 -69
- package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +296 -296
- package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +65 -65
- package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +138 -138
- package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +52 -52
- package/coverage/lcov-report/components/Header/hooks.js.html +109 -109
- package/coverage/lcov-report/components/Header/index.html +149 -149
- package/coverage/lcov-report/components/Header/utag-helpers.js.html +21 -21
- package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +108 -96
- package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +49 -49
- package/coverage/lcov-report/components/Infotip/index.html +32 -32
- package/coverage/lcov-report/components/Infotip/index.js.html +1 -1
- package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +116 -116
- package/coverage/lcov-report/components/Modal/Modal.jsx.html +243 -243
- package/coverage/lcov-report/components/Modal/index.html +34 -34
- package/coverage/lcov-report/components/Modal/index.jsx.html +25 -25
- package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +67 -67
- package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +80 -80
- package/coverage/lcov-report/components/NotificationBanner/index.html +39 -39
- package/coverage/lcov-report/components/NotificationBanner/index.js.html +379 -379
- package/coverage/lcov-report/components/SanitizedContent/index.html +19 -19
- package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +218 -287
- package/coverage/lcov-report/components/SessionDialogUI.jsx.html +359 -359
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +17 -17
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +152 -179
- package/coverage/lcov-report/components/SideNav/helpers.js.html +482 -653
- package/coverage/lcov-report/components/SideNav/index.html +17 -17
- package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +2 -2
- package/coverage/lcov-report/components/Tooltip/index.html +1 -1
- package/coverage/lcov-report/components/Tooltip/index.js.html +1 -1
- package/coverage/lcov-report/components/Tooltip/position.js.html +1 -1
- package/coverage/lcov-report/components/hooks/index.html +21 -21
- package/coverage/lcov-report/components/hooks/useGetConfig.js.html +109 -109
- package/coverage/lcov-report/components/index.html +17 -17
- package/coverage/lcov-report/index.html +153 -123
- package/coverage/lcov-report/index.js.html +3 -3
- package/coverage/lcov-report/lib/Chevron.jsx.html +36 -36
- package/coverage/lcov-report/lib/SvgComponents.jsx.html +1213 -1213
- package/coverage/lcov-report/lib/index.html +24 -24
- package/coverage/lcov-report/{Infotip.jsx.html → position.js.html} +81 -90
- package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
- package/coverage/lcov-report/react/components/Accordion/index.jsx.html +14 -14
- package/coverage/lcov-report/react/components/Button/index.html +1 -1
- package/coverage/lcov-report/react/components/Button/index.js.html +16 -16
- package/coverage/lcov-report/react/components/Dropdown/index.html +1 -1
- package/coverage/lcov-report/react/components/Dropdown/index.js.html +10 -10
- package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +4 -4
- package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +5 -5
- package/coverage/lcov-report/react/components/Error/error.js.html +5 -5
- package/coverage/lcov-report/react/components/Error/index.html +1 -1
- package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +11 -11
- package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +2 -2
- package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +2 -2
- package/coverage/lcov-report/react/components/Footer/footer.js.html +5 -5
- package/coverage/lcov-report/react/components/Footer/index.html +1 -1
- package/coverage/lcov-report/react/components/GovBanner/index.html +1 -1
- package/coverage/lcov-report/react/components/GovBanner/index.js.html +3 -3
- package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +10 -10
- package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +3 -3
- package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +16 -22
- package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +10 -64
- package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +8 -8
- package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +39 -39
- package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +10 -10
- package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +10 -10
- package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +5 -5
- package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +16 -16
- package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +2 -2
- package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +56 -50
- package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +2 -2
- package/coverage/lcov-report/react/components/Header/header.js.html +5 -5
- package/coverage/lcov-report/react/components/Header/hooks.js.html +9 -9
- package/coverage/lcov-report/react/components/Header/index.html +19 -19
- package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +2 -2
- package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +12 -12
- package/coverage/lcov-report/react/components/Infotip/InfotipContent.jsx.html +11 -11
- package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +6 -6
- package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/index.js.html +2 -2
- package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +11 -11
- package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +47 -47
- package/coverage/lcov-report/react/components/Modal/index.html +32 -32
- package/coverage/lcov-report/react/components/Modal/index.jsx.html +24 -24
- package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +7 -7
- package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +6 -6
- package/coverage/lcov-report/react/components/NotificationBanner/index.html +1 -1
- package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +31 -31
- package/coverage/lcov-report/react/components/SanitizedContent/index.html +21 -21
- package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +213 -213
- package/coverage/lcov-report/react/components/SessionDialog/index.html +1 -1
- package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +2 -2
- package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +90 -30
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +20 -20
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +21 -21
- package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +2 -2
- package/coverage/lcov-report/react/components/SideNav/Chart/index.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +36 -69
- package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +24 -24
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +23 -128
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +14 -407
- package/coverage/lcov-report/react/components/SideNav/Content/index.html +21 -21
- package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +2 -2
- package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +3 -3
- package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +10 -28
- package/coverage/lcov-report/react/components/SideNav/Details/index.html +13 -13
- package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +3 -3
- package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +5 -5
- package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +8 -8
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +3 -3
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +38 -38
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +15 -15
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +11 -11
- package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +6 -6
- package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +174 -165
- package/coverage/lcov-report/react/components/SideNav/UI/default-markup.js.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/UI/index.html +21 -21
- package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +2 -2
- package/coverage/lcov-report/react/components/SideNav/helpers.js.html +51 -972
- package/coverage/lcov-report/react/components/SideNav/index.html +27 -27
- package/coverage/lcov-report/react/components/SideNav/index.js.html +83 -17
- package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +42 -159
- package/coverage/lcov-report/react/components/Tooltip/index.html +9 -9
- package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
- package/coverage/lcov-report/react/components/Tooltip/position.js.html +20 -20
- package/coverage/lcov-report/react/components/hooks/index.html +1 -1
- package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +14 -8
- package/coverage/lcov-report/react/components/index.html +21 -21
- package/coverage/lcov-report/react/index.html +1 -1
- package/coverage/lcov-report/react/index.js.html +3 -3
- package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
- package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +72 -72
- package/coverage/lcov-report/react/lib/index.html +15 -15
- package/coverage/lcov-report/react/lib/svg-definitions.svg.html +1 -1
- package/coverage/lcov-report/react/session/index.html +41 -56
- package/coverage/lcov-report/react/session/index.js.html +1 -1
- package/coverage/lcov-report/react/session/logout.js.html +74 -71
- package/coverage/lcov-report/react/session/refresh.js.html +59 -68
- package/coverage/lcov-report/react/session/ttl.js.html +80 -44
- package/coverage/lcov-report/session/index.html +46 -46
- package/coverage/lcov-report/session/index.js.html +13 -13
- package/coverage/lcov-report/session/logout.js.html +97 -106
- package/coverage/lcov-report/session/refresh.js.html +71 -71
- package/coverage/lcov-report/session/ttl.js.html +62 -62
- package/coverage/lcov.info +947 -983
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
- package/storybook-static/229.630347465201d1822126.manager.bundle.js +1 -0
- package/storybook-static/295.aa3c5122636a27ad7c7b.manager.bundle.js +1 -0
- package/storybook-static/468.d976c69e47003b4dcfa3.manager.bundle.js +2 -0
- package/storybook-static/468.d976c69e47003b4dcfa3.manager.bundle.js.LICENSE.txt +94 -0
- package/storybook-static/51.fc4b02f2a75c894ae64e.manager.bundle.js +2 -0
- package/storybook-static/51.fc4b02f2a75c894ae64e.manager.bundle.js.LICENSE.txt +8 -0
- package/storybook-static/551.45aead073703cc6fb12b.manager.bundle.js +1 -0
- package/storybook-static/807.1a7f4dcf15e4696572ca.manager.bundle.js +2 -0
- package/storybook-static/807.1a7f4dcf15e4696572ca.manager.bundle.js.LICENSE.txt +31 -0
- package/storybook-static/897.9b5fee8cc7074607c812.manager.bundle.js +2 -0
- package/storybook-static/897.9b5fee8cc7074607c812.manager.bundle.js.LICENSE.txt +12 -0
- package/storybook-static/935.532759f0652585685af7.manager.bundle.js +1 -0
- package/storybook-static/favicon.ico +0 -0
- package/storybook-static/index.html +59 -0
- package/storybook-static/main.ad4edcd27d527a119d7a.manager.bundle.js +1 -0
- package/storybook-static/project.json +1 -0
- package/storybook-static/runtime~main.b165398bf7ef3e30d431.manager.bundle.js +1 -0
- package/styles/_main.scss +2 -2
- package/styles/qppds/components/_header.scss +72 -50
- package/styles/qppds/components/_search.scss +60 -1
- package/coverage/lcov-report/InfotipIcon.jsx.html +0 -208
- package/coverage/lcov-report/components/Infotip/InfotipContent.jsx.html +0 -223
- package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +0 -889
- package/coverage/lcov-report/components/SideNav/Chart/index.html +0 -116
- package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +0 -667
- package/coverage/lcov-report/react/components/Session/Session.jsx.html +0 -382
- package/coverage/lcov-report/react/components/Session/SessionDialogWrapped.jsx.html +0 -121
- package/coverage/lcov-report/react/components/Session/index.html +0 -146
- package/coverage/lcov-report/react/components/Session/index.jsx.html +0 -94
- package/coverage/lcov-report/react/session/isAuthV2.js.html +0 -151
|
@@ -8,7 +8,6 @@ import { OpenInNewIcon } from "../../lib/SvgComponents";
|
|
|
8
8
|
const infoTipLabel =
|
|
9
9
|
"When dialing 711, you will automatically be connected to a TRS Communications Assistant who will relay your conversation to the help desk agent with strict confidentiality.";
|
|
10
10
|
const { version: buildVersion } = pjson;
|
|
11
|
-
|
|
12
11
|
const FooterUI = () => (
|
|
13
12
|
<>
|
|
14
13
|
<div className="feedback-session-sign-up">
|
|
@@ -4,7 +4,8 @@ import PropTypes from "prop-types";
|
|
|
4
4
|
import HeaderLogo from "./HeaderLogo";
|
|
5
5
|
import NotificationBanner from "../NotificationBanner";
|
|
6
6
|
import GovBanner from "../GovBanner";
|
|
7
|
-
import { useHeaderState } from "./hooks";
|
|
7
|
+
import { useHeaderState, useWindowWidth } from "./hooks";
|
|
8
|
+
import HeaderSearchBar from "../HeaderSearchBar";
|
|
8
9
|
/**
|
|
9
10
|
* Accessibility enhancement that moves focus to an element for "Skip" links
|
|
10
11
|
* @param {Object} e - The native JS event
|
|
@@ -22,13 +23,18 @@ const HeaderContainer = ({
|
|
|
22
23
|
skipToContentId,
|
|
23
24
|
isIESupportPage,
|
|
24
25
|
isDevPre,
|
|
26
|
+
showSearchBar,
|
|
25
27
|
}) => {
|
|
28
|
+
const windowWidth = useWindowWidth();
|
|
26
29
|
const { currentOpenMenu } = useHeaderState();
|
|
27
|
-
const
|
|
30
|
+
const showSearch = showSearchBar === "true";
|
|
31
|
+
const cssCancelBtn = showCancelButton ? "show-cancel-button " : "";
|
|
28
32
|
const cssMenuDropdownStatus =
|
|
29
33
|
currentOpenMenu === ""
|
|
30
34
|
? "header-dropdown--closed"
|
|
31
35
|
: "header-dropdown--open";
|
|
36
|
+
const cssSearchBar = showSearch ? " header-height" : "";
|
|
37
|
+
const headerClasses = `${cssCancelBtn}${cssMenuDropdownStatus}${cssSearchBar}`;
|
|
32
38
|
|
|
33
39
|
return (
|
|
34
40
|
<>
|
|
@@ -50,9 +56,12 @@ const HeaderContainer = ({
|
|
|
50
56
|
)}
|
|
51
57
|
<GovBanner />
|
|
52
58
|
{!isIESupportPage && <NotificationBanner />}
|
|
53
|
-
<header id="top" className={
|
|
54
|
-
<
|
|
55
|
-
|
|
59
|
+
<header id="top" className={headerClasses}>
|
|
60
|
+
{showSearch && windowWidth > 767 ? <HeaderSearchBar /> : null}
|
|
61
|
+
<>
|
|
62
|
+
<HeaderLogo isDevPre={isDevPre} hasSearchBar={showSearch} />
|
|
63
|
+
{children}
|
|
64
|
+
</>
|
|
56
65
|
</header>
|
|
57
66
|
</>
|
|
58
67
|
);
|
|
@@ -65,12 +74,14 @@ HeaderContainer.propTypes = {
|
|
|
65
74
|
skipToContentId: PropTypes.string,
|
|
66
75
|
isIESupportPage: PropTypes.bool,
|
|
67
76
|
isDevPre: PropTypes.object,
|
|
77
|
+
showSearchBar: PropTypes.bool,
|
|
68
78
|
};
|
|
69
79
|
HeaderContainer.defaultProps = {
|
|
70
80
|
includeSkipToSidebar: false,
|
|
71
81
|
showCancelButton: false,
|
|
72
82
|
skipToContentId: null,
|
|
73
83
|
isIESupportPage: false,
|
|
84
|
+
showSearchBar: false,
|
|
74
85
|
};
|
|
75
86
|
|
|
76
87
|
export default HeaderContainer;
|
|
@@ -3,12 +3,13 @@ import PropTypes from "prop-types";
|
|
|
3
3
|
|
|
4
4
|
import { useHeaderState } from "./hooks";
|
|
5
5
|
|
|
6
|
-
const HeaderLogo = (isDevPre) => {
|
|
6
|
+
const HeaderLogo = ({ isDevPre, hasSearchBar }) => {
|
|
7
7
|
const { closeMenus, RouterLink } = useHeaderState();
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const searchHeaderClass = hasSearchBar ? " header-logo-search" : "";
|
|
9
|
+
const headerLogoClass = `header-logo${searchHeaderClass}`;
|
|
10
|
+
if (isDevPre) {
|
|
10
11
|
return (
|
|
11
|
-
<div className=
|
|
12
|
+
<div className={headerLogoClass}>
|
|
12
13
|
<img
|
|
13
14
|
className="qpp-logo"
|
|
14
15
|
src="/images/qpp_logo_rgb_color.png"
|
|
@@ -20,7 +21,7 @@ const HeaderLogo = (isDevPre) => {
|
|
|
20
21
|
if (RouterLink) {
|
|
21
22
|
return (
|
|
22
23
|
<RouterLink
|
|
23
|
-
className=
|
|
24
|
+
className={headerLogoClass}
|
|
24
25
|
to="/"
|
|
25
26
|
onClick={closeMenus}
|
|
26
27
|
data-track-category="HeaderNav"
|
|
@@ -38,7 +39,7 @@ const HeaderLogo = (isDevPre) => {
|
|
|
38
39
|
|
|
39
40
|
return (
|
|
40
41
|
<a
|
|
41
|
-
className=
|
|
42
|
+
className={headerLogoClass}
|
|
42
43
|
href="/"
|
|
43
44
|
data-track-category="HeaderNav"
|
|
44
45
|
data-track-action="OpenQPPHome"
|
|
@@ -54,7 +55,8 @@ const HeaderLogo = (isDevPre) => {
|
|
|
54
55
|
};
|
|
55
56
|
|
|
56
57
|
HeaderLogo.propTypes = {
|
|
57
|
-
isDevPre: PropTypes.
|
|
58
|
+
isDevPre: PropTypes.bool,
|
|
59
|
+
hasSearchBar: PropTypes.bool,
|
|
58
60
|
};
|
|
59
61
|
|
|
60
62
|
export default HeaderLogo;
|
|
@@ -6,8 +6,9 @@ import HeaderContainer from "./HeaderContainer";
|
|
|
6
6
|
import HeaderMenuItem from "./HeaderMenuItem";
|
|
7
7
|
import HeaderMobileButton from "./HeaderMobileButton";
|
|
8
8
|
import ImpersonatorBanner from "./ImpersonatorBanner";
|
|
9
|
+
import HeaderSearchBar from "../HeaderSearchBar";
|
|
9
10
|
import HelpIcon from "./HelpIcon";
|
|
10
|
-
import { HeaderStateProvider } from "./hooks";
|
|
11
|
+
import { HeaderStateProvider, useWindowWidth } from "./hooks";
|
|
11
12
|
import defaultContent from "./default-content.json";
|
|
12
13
|
|
|
13
14
|
const HeaderUI = ({
|
|
@@ -22,6 +23,7 @@ const HeaderUI = ({
|
|
|
22
23
|
}) => {
|
|
23
24
|
const [isMobileMenuExpanded, setIsMobileMenuExpanded] = useState(false);
|
|
24
25
|
const [headerContent, setHeaderContent] = useState({});
|
|
26
|
+
const windowWidth = useWindowWidth();
|
|
25
27
|
|
|
26
28
|
const mapContentToRows = (config) => {
|
|
27
29
|
// Append transposed array to content
|
|
@@ -63,22 +65,22 @@ const HeaderUI = ({
|
|
|
63
65
|
}, []);
|
|
64
66
|
|
|
65
67
|
const content = mapContentToRows(headerContent?.content);
|
|
68
|
+
const sharedHeaderProps = {
|
|
69
|
+
skipToContentId,
|
|
70
|
+
includeSkipToSidebar,
|
|
71
|
+
showSearchBar: headerContent.showSearchBar,
|
|
72
|
+
};
|
|
66
73
|
|
|
67
74
|
const displayCancelContent = () => (
|
|
68
|
-
<HeaderContainer
|
|
69
|
-
showCancelButton
|
|
70
|
-
skipToContentId={skipToContentId}
|
|
71
|
-
includeSkipToSidebar={includeSkipToSidebar}
|
|
72
|
-
>
|
|
75
|
+
<HeaderContainer {...sharedHeaderProps} showCancelButton>
|
|
73
76
|
<HeaderCancel handleCancel={handleCancel} />
|
|
74
77
|
</HeaderContainer>
|
|
75
78
|
);
|
|
76
79
|
|
|
77
80
|
const displayDevPreContent = () => (
|
|
78
81
|
<HeaderContainer
|
|
82
|
+
{...sharedHeaderProps}
|
|
79
83
|
isIESupportPage={isIESupportPage}
|
|
80
|
-
skipToContentId={skipToContentId}
|
|
81
|
-
includeSkipToSidebar={includeSkipToSidebar}
|
|
82
84
|
isDevPre={isDevPre}
|
|
83
85
|
>
|
|
84
86
|
<nav aria-label="Primary navigation" hidden={!isMobileMenuExpanded}>
|
|
@@ -91,12 +93,13 @@ const HeaderUI = ({
|
|
|
91
93
|
|
|
92
94
|
const displayHeaderContent = () => (
|
|
93
95
|
<>
|
|
94
|
-
<HeaderContainer
|
|
95
|
-
isIESupportPage={isIESupportPage}
|
|
96
|
-
skipToContentId={skipToContentId}
|
|
97
|
-
includeSkipToSidebar={includeSkipToSidebar}
|
|
98
|
-
>
|
|
96
|
+
<HeaderContainer {...sharedHeaderProps} isIESupportPage={isIESupportPage}>
|
|
99
97
|
<HelpIcon />
|
|
98
|
+
{headerContent.showSearchBar === "true" && windowWidth < 768 ? (
|
|
99
|
+
<div style={{ width: "100%" }}>
|
|
100
|
+
<HeaderSearchBar />
|
|
101
|
+
</div>
|
|
102
|
+
) : null}
|
|
100
103
|
<HeaderMobileButton
|
|
101
104
|
handleClick={() => setIsMobileMenuExpanded(!isMobileMenuExpanded)}
|
|
102
105
|
isMobileMenuExpanded={isMobileMenuExpanded}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
const HeaderSearchBar = () => {
|
|
4
|
+
return (
|
|
5
|
+
<div className="qpp-c-search--header-container">
|
|
6
|
+
<div className="qpp-c-search--header-container__block">
|
|
7
|
+
<div className="qpp-c-search--header-container__title">
|
|
8
|
+
Search (beta)
|
|
9
|
+
</div>
|
|
10
|
+
<form
|
|
11
|
+
id="search_form"
|
|
12
|
+
acceptCharset="UTF-8"
|
|
13
|
+
action="https://search.usa.gov/search"
|
|
14
|
+
aria-labelledby="site-search-label"
|
|
15
|
+
role="search"
|
|
16
|
+
method="get"
|
|
17
|
+
className="qpp-c-search qpp-c-search--global qpp-u-width--100"
|
|
18
|
+
>
|
|
19
|
+
<div
|
|
20
|
+
style={{
|
|
21
|
+
margin: "0px",
|
|
22
|
+
padding: "0px",
|
|
23
|
+
display: "inline",
|
|
24
|
+
}}
|
|
25
|
+
>
|
|
26
|
+
<input name="utf8" type="hidden" value="✓" />
|
|
27
|
+
</div>
|
|
28
|
+
<input id="affiliate" name="affiliate" type="hidden" value="qpp" />
|
|
29
|
+
<label
|
|
30
|
+
id="site-search-label"
|
|
31
|
+
className="qpp-u-visually-hidden"
|
|
32
|
+
htmlFor="query"
|
|
33
|
+
>
|
|
34
|
+
Site Search
|
|
35
|
+
</label>
|
|
36
|
+
<div className="qpp-u-width--100 qpp-u-display--flex">
|
|
37
|
+
<div className="qpp-c-search__wrap">
|
|
38
|
+
<input
|
|
39
|
+
autoComplete="off"
|
|
40
|
+
className="qpp-c-text-input"
|
|
41
|
+
id="query"
|
|
42
|
+
name="query"
|
|
43
|
+
type="text"
|
|
44
|
+
/>
|
|
45
|
+
</div>
|
|
46
|
+
<button
|
|
47
|
+
name="commit"
|
|
48
|
+
id="global-search"
|
|
49
|
+
type="submit"
|
|
50
|
+
className="qpp-c-search__submit qpp-c-button qpp-c-button--secondary"
|
|
51
|
+
>
|
|
52
|
+
<span className="qpp-u-visually-hidden">Search</span>
|
|
53
|
+
<svg
|
|
54
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
55
|
+
viewBox="0 0 24 24"
|
|
56
|
+
className="qpp-icon-mat qpp-icon-inline--lg"
|
|
57
|
+
aria-hidden="true"
|
|
58
|
+
focusable="false"
|
|
59
|
+
>
|
|
60
|
+
<path d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" />
|
|
61
|
+
</svg>
|
|
62
|
+
</button>
|
|
63
|
+
</div>
|
|
64
|
+
</form>
|
|
65
|
+
</div>
|
|
66
|
+
<div>
|
|
67
|
+
<a
|
|
68
|
+
className="survey-link"
|
|
69
|
+
href="https://agilesix.qualtrics.com/jfe/form/SV_e3Esl9l6dXWLnwy"
|
|
70
|
+
rel="noreferrer"
|
|
71
|
+
target="_blank"
|
|
72
|
+
>
|
|
73
|
+
Give feedback about the Search experience
|
|
74
|
+
</a>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export default HeaderSearchBar;
|
|
@@ -11,45 +11,9 @@ const MINUTE = 60 * SECOND;
|
|
|
11
11
|
const TWO_MINUTES = 2 * MINUTE;
|
|
12
12
|
const DEFAULT_SESSION_CHECK_INTERVAL = TWO_MINUTES;
|
|
13
13
|
|
|
14
|
-
// This Dialog shows up 2 minutes before the user session ends
|
|
15
|
-
// giving the user an opportunity to refresh the token
|
|
16
|
-
// or to sign out
|
|
17
|
-
const InactiveDialog = () => {
|
|
18
|
-
const [isOpen, setIsOpen] = useState(true);
|
|
19
|
-
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
const timeout = setTimeout(() => logoutSession(window), TWO_MINUTES);
|
|
22
|
-
return () => clearInterval(timeout);
|
|
23
|
-
}, []);
|
|
24
|
-
|
|
25
|
-
return (
|
|
26
|
-
<Modal
|
|
27
|
-
useDesignSystem
|
|
28
|
-
title="You will be signed out within two minutes"
|
|
29
|
-
isOpen={isOpen}
|
|
30
|
-
primary={{
|
|
31
|
-
title: "Keep me signed in",
|
|
32
|
-
onClick: () => {
|
|
33
|
-
refreshSession();
|
|
34
|
-
setIsOpen(false);
|
|
35
|
-
},
|
|
36
|
-
}}
|
|
37
|
-
secondary={{
|
|
38
|
-
title: "Sign me out now",
|
|
39
|
-
onClick: () => logoutSession(window),
|
|
40
|
-
}}
|
|
41
|
-
onRequestClose={() => setIsOpen(false)}
|
|
42
|
-
>
|
|
43
|
-
<p>
|
|
44
|
-
You have been inactive for thirty minutes. For your security, we will
|
|
45
|
-
sign you out automatically.
|
|
46
|
-
</p>
|
|
47
|
-
</Modal>
|
|
48
|
-
);
|
|
49
|
-
};
|
|
50
|
-
|
|
51
14
|
// 120 seconds is 2 minutes
|
|
52
15
|
const DEFAULT_WARNING_TIMEOUT_SECONDS = 120;
|
|
16
|
+
|
|
53
17
|
function shouldShowInactiveDialog(
|
|
54
18
|
timeRemainingSeconds,
|
|
55
19
|
warningTimeoutSeconds = DEFAULT_WARNING_TIMEOUT_SECONDS,
|
|
@@ -58,18 +22,20 @@ function shouldShowInactiveDialog(
|
|
|
58
22
|
}
|
|
59
23
|
|
|
60
24
|
const Session = () => {
|
|
61
|
-
const [
|
|
25
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
26
|
+
|
|
27
|
+
let ttlInterval;
|
|
62
28
|
|
|
63
29
|
useEffect(() => {
|
|
64
30
|
let didCancel = false;
|
|
65
31
|
const cookies = cookie.parse(document.cookie);
|
|
66
32
|
const hasAuthToken = !!cookies.qpp_auth_token;
|
|
33
|
+
|
|
67
34
|
async function isSessionValid() {
|
|
68
35
|
if (hasAuthToken) {
|
|
69
36
|
const timeRemaining = await fetchTtl(cookies.qpp_auth_token);
|
|
70
37
|
// safeguard against unmounted component
|
|
71
38
|
if (didCancel) return;
|
|
72
|
-
|
|
73
39
|
// token expired
|
|
74
40
|
if (timeRemaining === 0) {
|
|
75
41
|
logoutSession(window);
|
|
@@ -77,23 +43,47 @@ const Session = () => {
|
|
|
77
43
|
}
|
|
78
44
|
// token is about to expire
|
|
79
45
|
if (shouldShowInactiveDialog(timeRemaining)) {
|
|
80
|
-
|
|
46
|
+
setIsOpen(true);
|
|
81
47
|
}
|
|
82
48
|
}
|
|
83
49
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
isSessionValid,
|
|
87
|
-
DEFAULT_SESSION_CHECK_INTERVAL,
|
|
88
|
-
);
|
|
50
|
+
|
|
51
|
+
ttlInterval = setInterval(isSessionValid, DEFAULT_SESSION_CHECK_INTERVAL);
|
|
89
52
|
|
|
90
53
|
return () => {
|
|
91
|
-
clearInterval(
|
|
54
|
+
clearInterval(ttlInterval);
|
|
92
55
|
didCancel = true;
|
|
93
56
|
};
|
|
94
57
|
}, []);
|
|
95
58
|
|
|
96
|
-
|
|
59
|
+
// This Dialog shows up 2 minutes before the user session ends
|
|
60
|
+
// giving the user an opportunity to refresh the token
|
|
61
|
+
// or to sign out
|
|
62
|
+
return (
|
|
63
|
+
<Modal
|
|
64
|
+
useDesignSystem
|
|
65
|
+
title="You will be signed out within two minutes"
|
|
66
|
+
isOpen={isOpen}
|
|
67
|
+
primary={{
|
|
68
|
+
title: "Keep me signed in",
|
|
69
|
+
onClick: () => {
|
|
70
|
+
refreshSession();
|
|
71
|
+
clearInterval(ttlInterval);
|
|
72
|
+
setIsOpen(false);
|
|
73
|
+
},
|
|
74
|
+
}}
|
|
75
|
+
secondary={{
|
|
76
|
+
title: "Sign me out now",
|
|
77
|
+
onClick: () => logoutSession(window),
|
|
78
|
+
}}
|
|
79
|
+
onRequestClose={() => setIsOpen(false)}
|
|
80
|
+
>
|
|
81
|
+
<p>
|
|
82
|
+
You have been inactive for thirty minutes. For your security, we will
|
|
83
|
+
sign you out automatically.
|
|
84
|
+
</p>
|
|
85
|
+
</Modal>
|
|
86
|
+
);
|
|
97
87
|
};
|
|
98
88
|
|
|
99
89
|
export default Session;
|