qpp-style 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +28 -28
- package/.husky/pre-commit +5 -0
- package/README.md +45 -0
- package/components/Accordion/index.jsx +35 -43
- package/components/Alert/index.js +53 -0
- package/components/Breadcrumb/Breadcrumb.md +28 -0
- package/components/Breadcrumb/index.js +69 -11
- package/components/Button/index.js +90 -0
- package/components/CalloutBox/index.js +109 -0
- package/components/Card/index.js +137 -0
- package/components/Details/DetailsIcons.js +50 -0
- package/components/Details/index.js +53 -0
- package/components/Dropdown/index.js +85 -0
- package/components/DropdownButton/Menu.js +25 -0
- package/components/DropdownButton/MenuButton.js +41 -0
- package/components/DropdownButton/MenuItem.js +25 -0
- package/components/DropdownButton/MenuItemLink.js +27 -0
- package/components/Error/Collapsible.jsx +2 -2
- package/components/Footer/FooterUI.jsx +175 -177
- package/components/Footer/footer.js +2 -12
- package/components/GovBanner/index.js +117 -0
- package/components/Header/HeaderAccountMenu.jsx +63 -234
- package/components/Header/HeaderCancel.jsx +5 -10
- package/components/Header/HeaderContainer.jsx +74 -0
- package/components/Header/HeaderLogo.jsx +42 -0
- package/components/Header/HeaderMenuButton.js +50 -0
- package/components/Header/HeaderMenuItem.jsx +239 -0
- package/components/Header/HeaderMenuLink.js +56 -0
- package/components/Header/HeaderMenuSignOutButton.js +62 -0
- package/components/Header/HeaderMobileButton.js +37 -0
- package/components/Header/HeaderUI.jsx +130 -361
- package/components/Header/HelpIcon.jsx +32 -0
- package/components/Header/ImpersonatorBanner.jsx +81 -0
- package/components/Header/default-content.json +158 -87
- package/components/Header/header.js +2 -0
- package/components/Header/hooks.js +66 -0
- package/components/Header/utag-helpers.js +9 -0
- package/components/Infotip/Infotip.jsx +6 -10
- package/components/Infotip/InfotipContent.jsx +46 -0
- package/components/Infotip/InfotipIcon.jsx +3 -3
- package/components/Link/index.js +61 -0
- package/components/Modal/LegacyModal.jsx +72 -0
- package/components/Modal/Modal.jsx +140 -0
- package/components/Modal/index.jsx +13 -63
- package/components/NotificationBanner/CollapsedView.js +39 -0
- package/components/NotificationBanner/ExpandedView.js +45 -0
- package/components/NotificationBanner/index.js +219 -30
- package/components/Search/index.js +98 -0
- package/components/SessionDialog/sessionDialog.js +26 -0
- package/components/SessionDialogUI.jsx +34 -26
- package/components/SideNav/AnimationGroup/AnimationGroup.jsx +10 -4
- package/components/SideNav/Chart/ScoreChart.jsx +81 -109
- package/components/SideNav/Chart/__tests__/ScoreChart.test.js +3 -12
- package/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +144 -35
- package/components/SideNav/Chart/index.js +1 -1
- package/components/SideNav/Content/LevelOneContent.jsx +146 -258
- package/components/SideNav/Content/LevelTwoContent.jsx +6 -4
- package/components/SideNav/Content/SelectRole/index.js +77 -0
- package/components/SideNav/Content/SelectRole/utils.js +140 -0
- package/components/SideNav/Details/PracticeDetails.jsx +4 -0
- package/components/SideNav/Links/CmsSwitchLink.jsx +1 -1
- package/components/SideNav/Links/NavLinkContainer.jsx +29 -34
- package/components/SideNav/Links/NavLinkDrawer.jsx +192 -124
- package/components/SideNav/Links/NavLinkInline.jsx +7 -2
- package/components/SideNav/Links/NavLinkToggle.jsx +1 -1
- package/components/SideNav/SideNav.md +28 -27
- package/components/SideNav/UI/SideNavUI.jsx +198 -268
- package/components/SideNav/UI/default-content.json +117 -0
- package/components/SideNav/helpers.js +316 -4
- package/components/Tabs/TabPanel.js +5 -0
- package/components/Tabs/Tabs.js +73 -0
- package/components/TextInput/index.js +137 -0
- package/components/hooks/useGetConfig.js +75 -0
- package/components/index.js +106 -9
- package/coverage/clover.xml +1194 -748
- package/coverage/coverage-final.json +72 -50
- package/coverage/lcov-report/block-navigation.js +8 -0
- package/coverage/lcov-report/components/Accordion/index.html +26 -21
- package/coverage/lcov-report/components/Accordion/index.jsx.html +106 -131
- package/coverage/lcov-report/{SideNav/Chart → components/Button}/index.html +29 -24
- package/coverage/lcov-report/{Error/Collapsible.jsx.html → components/Button/index.js.html} +125 -114
- package/coverage/lcov-report/components/Error/Collapsible.jsx.html +92 -87
- package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +32 -33
- package/coverage/lcov-report/components/Error/index.html +11 -6
- package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +200 -189
- package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +24 -61
- package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +18 -13
- package/coverage/lcov-report/components/Footer/index.html +35 -45
- package/coverage/lcov-report/components/{InfoModal → GovBanner}/index.html +27 -22
- package/coverage/lcov-report/components/{InfoModal/index.jsx.html → GovBanner/index.js.html} +157 -122
- package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +93 -520
- package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +19 -23
- package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
- package/coverage/lcov-report/components/Header/HeaderLogo.jsx.html +211 -0
- package/coverage/lcov-report/components/Header/HeaderMenuButton.js.html +235 -0
- package/coverage/lcov-report/components/{Footer/LegacyFooterUI.jsx.html → Header/HeaderMenuItem.jsx.html} +334 -200
- package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
- package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
- package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +196 -0
- package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +176 -756
- package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
- package/coverage/lcov-report/{Accordion/index.jsx.html → components/Header/ImpersonatorBanner.jsx.html} +109 -167
- package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +24 -19
- package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
- package/coverage/lcov-report/components/Header/index.html +203 -33
- package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +35 -42
- package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +53 -48
- package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +37 -32
- package/coverage/lcov-report/components/Infotip/index.html +8 -3
- package/coverage/lcov-report/components/Infotip/index.js.html +8 -3
- package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
- package/coverage/lcov-report/components/Modal/Modal.jsx.html +505 -0
- package/coverage/lcov-report/components/Modal/index.html +146 -0
- package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Modal/index.jsx.html} +50 -42
- package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +202 -0
- package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +220 -0
- package/coverage/lcov-report/components/NotificationBanner/index.html +58 -23
- package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → NotificationBanner/index.js.html} +292 -272
- package/coverage/lcov-report/components/SanitizedContent/index.html +8 -3
- package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +475 -50
- package/coverage/lcov-report/components/SessionDialogUI.jsx.html +248 -255
- package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +272 -408
- package/coverage/lcov-report/components/SideNav/Chart/index.html +28 -38
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +116 -0
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
- package/coverage/lcov-report/components/SideNav/helpers.js.html +987 -46
- package/coverage/lcov-report/components/SideNav/index.html +24 -19
- package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +70 -65
- package/coverage/lcov-report/components/Tooltip/index.html +8 -3
- package/coverage/lcov-report/components/Tooltip/index.js.html +8 -3
- package/coverage/lcov-report/components/Tooltip/position.js.html +57 -64
- package/coverage/lcov-report/components/hooks/index.html +116 -0
- package/coverage/lcov-report/components/hooks/useGetConfig.js.html +310 -0
- package/coverage/lcov-report/components/index.html +10 -5
- package/coverage/lcov-report/index.html +249 -154
- package/coverage/lcov-report/{Error/ErrorUI.jsx.html → lib/Chevron.jsx.html} +44 -42
- package/coverage/lcov-report/lib/SvgComponents.jsx.html +1840 -0
- package/coverage/lcov-report/lib/index.html +34 -14
- package/coverage/lcov-report/react/components/Accordion/index.html +26 -21
- package/coverage/lcov-report/react/components/Accordion/index.jsx.html +106 -131
- package/coverage/lcov-report/react/components/{FlashNotification → Button}/index.html +23 -33
- package/coverage/lcov-report/{components/SideNav/Links/NavLinkInline.jsx.html → react/components/Button/index.js.html} +119 -120
- package/coverage/lcov-report/react/components/{Tabs → Dropdown}/index.html +23 -33
- package/coverage/lcov-report/react/components/{InfoModal/index.jsx.html → Dropdown/index.js.html} +103 -155
- package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +92 -87
- package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +32 -33
- package/coverage/lcov-report/react/components/Error/error.js.html +25 -20
- package/coverage/lcov-report/react/components/Error/index.html +11 -6
- package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +200 -189
- package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +14 -15
- package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +18 -13
- package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +18 -13
- package/coverage/lcov-report/react/components/Footer/footer.js.html +12 -34
- package/coverage/lcov-report/react/components/Footer/index.html +35 -45
- package/coverage/lcov-report/react/components/{InfoModal → GovBanner}/index.html +27 -22
- package/coverage/lcov-report/react/components/{Tabs/TabsUI.jsx.html → GovBanner/index.js.html} +146 -153
- package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +93 -520
- package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +19 -23
- package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +307 -0
- package/coverage/lcov-report/{components/SideNav/Links/CmsSwitchLink.jsx.html → react/components/Header/HeaderLogo.jsx.html} +64 -53
- package/coverage/lcov-report/{components/SideNav/Links/NavItemInline.jsx.html → react/components/Header/HeaderMenuButton.js.html} +64 -71
- package/coverage/lcov-report/{components/SideNav/Links/NavLinkDrawer.jsx.html → react/components/Header/HeaderMenuItem.jsx.html} +284 -261
- package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +253 -0
- package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +271 -0
- package/coverage/lcov-report/{components/SideNav/Links/NavLinkToggle.jsx.html → react/components/Header/HeaderMobileButton.js.html} +58 -41
- package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +189 -745
- package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +181 -0
- package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +331 -0
- package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +18 -13
- package/coverage/lcov-report/react/components/Header/header.js.html +18 -4
- package/coverage/lcov-report/react/components/Header/hooks.js.html +283 -0
- package/coverage/lcov-report/react/components/Header/index.html +205 -35
- package/coverage/lcov-report/react/components/{Spinner/index.js.html → Header/utag-helpers.js.html} +26 -21
- package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +53 -48
- package/coverage/lcov-report/{components/SideNav/Links/NavLinkContainer.jsx.html → react/components/Infotip/InfotipContent.jsx.html} +83 -60
- package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +37 -32
- package/coverage/lcov-report/react/components/Infotip/index.html +8 -3
- package/coverage/lcov-report/react/components/Infotip/index.js.html +8 -3
- package/coverage/lcov-report/react/components/{FlashNotification/FlashNotificationUI.jsx.html → Modal/LegacyModal.jsx.html} +89 -84
- package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +505 -0
- package/coverage/lcov-report/react/components/Modal/index.html +52 -17
- package/coverage/lcov-report/react/components/Modal/index.jsx.html +38 -201
- package/coverage/lcov-report/react/components/{Tabs/tabs.js.html → NotificationBanner/CollapsedView.js.html} +61 -47
- package/coverage/lcov-report/{components/SideNav/Details/PracticeDetails.jsx.html → react/components/NotificationBanner/ExpandedView.js.html} +74 -57
- package/coverage/lcov-report/react/components/NotificationBanner/index.html +58 -23
- package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +615 -43
- package/coverage/lcov-report/react/components/SanitizedContent/index.html +8 -3
- package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +478 -53
- package/coverage/lcov-report/react/components/{Spinner → SessionDialog}/index.html +11 -6
- package/coverage/lcov-report/react/components/{FlashNotification/index.js.html → SessionDialog/sessionDialog.js.html} +35 -42
- package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +248 -255
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +53 -18
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +18 -13
- package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +272 -402
- package/coverage/lcov-report/react/components/SideNav/Chart/index.html +28 -23
- package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +9 -4
- package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +190 -521
- package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +23 -12
- package/coverage/lcov-report/{components/SideNav/Details → react/components/SideNav/Content/SelectRole}/index.html +42 -52
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +316 -0
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +505 -0
- package/coverage/lcov-report/react/components/SideNav/Content/index.html +32 -27
- package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +8 -3
- package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +20 -24
- package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +54 -37
- package/coverage/lcov-report/react/components/SideNav/Details/index.html +23 -18
- package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +8 -3
- package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +9 -4
- package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +8 -3
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +56 -57
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +351 -142
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +60 -40
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +9 -4
- package/coverage/lcov-report/react/components/SideNav/Links/index.html +44 -39
- package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +8 -3
- package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +243 -433
- package/coverage/lcov-report/react/components/SideNav/UI/index.html +28 -23
- package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +8 -3
- package/coverage/lcov-report/react/components/SideNav/helpers.js.html +958 -17
- package/coverage/lcov-report/react/components/SideNav/index.html +27 -22
- package/coverage/lcov-report/react/components/SideNav/index.js.html +8 -3
- package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +70 -65
- package/coverage/lcov-report/react/components/Tooltip/index.html +8 -3
- package/coverage/lcov-report/react/components/Tooltip/index.js.html +8 -3
- package/coverage/lcov-report/react/components/Tooltip/position.js.html +57 -64
- package/coverage/lcov-report/{components/SideNav/AnimationGroup → react/components/hooks}/index.html +29 -24
- package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +310 -0
- package/coverage/lcov-report/react/components/index.html +10 -5
- package/coverage/lcov-report/react/index.html +20 -15
- package/coverage/lcov-report/react/index.js.html +29 -9
- package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
- package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +195 -106
- package/coverage/lcov-report/react/lib/index.html +37 -17
- package/coverage/lcov-report/react/lib/svg-definitions.svg.html +57 -916
- package/coverage/lcov-report/react/session/index.html +32 -27
- package/coverage/lcov-report/react/session/index.js.html +8 -3
- package/coverage/lcov-report/react/session/logout.js.html +121 -17
- package/coverage/lcov-report/react/session/refresh.js.html +11 -6
- package/coverage/lcov-report/react/session/ttl.js.html +8 -3
- package/coverage/lcov-report/session/index.html +50 -45
- package/coverage/lcov-report/session/index.js.html +8 -3
- package/coverage/lcov-report/session/logout.js.html +144 -49
- package/coverage/lcov-report/session/refresh.js.html +41 -36
- package/coverage/lcov-report/session/ttl.js.html +34 -29
- package/coverage/lcov-report/sorter.js +26 -0
- package/coverage/lcov.info +2427 -1491
- package/dist/browser.js +1 -1
- package/dist/browser.js.LICENSE.txt +1 -7
- package/dist/browser.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.LICENSE.txt +1 -7
- package/dist/index.js.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.LICENSE.txt +16 -16
- package/dist/react/index.js.map +1 -1
- package/fonts/PublicSans-Black.ttf +0 -0
- package/fonts/PublicSans-BlackItalic.ttf +0 -0
- package/fonts/PublicSans-Bold.ttf +0 -0
- package/fonts/PublicSans-BoldItalic.ttf +0 -0
- package/fonts/PublicSans-ExtraBold.ttf +0 -0
- package/fonts/PublicSans-ExtraBoldItalic.ttf +0 -0
- package/fonts/PublicSans-ExtraLight.ttf +0 -0
- package/fonts/PublicSans-ExtraLightItalic.ttf +0 -0
- package/fonts/PublicSans-Italic.ttf +0 -0
- package/fonts/PublicSans-Light.ttf +0 -0
- package/fonts/PublicSans-LightItalic.ttf +0 -0
- package/fonts/PublicSans-Medium.ttf +0 -0
- package/fonts/PublicSans-MediumItalic.ttf +0 -0
- package/fonts/PublicSans-Regular.ttf +0 -0
- package/fonts/PublicSans-SemiBold.ttf +0 -0
- package/fonts/PublicSans-SemiBoldItalic.ttf +0 -0
- package/fonts/PublicSans-Thin.ttf +0 -0
- package/fonts/PublicSans-ThinItalic.ttf +0 -0
- package/images/icon-dot-gov.svg +1 -0
- package/images/icon-https.svg +1 -0
- package/images/icons/close-x.svg +6 -0
- package/images/icons/svg/arrow-down.svg +3 -0
- package/images/icons/svg/arrow-download.svg +1 -0
- package/images/icons/svg/arrow-right.svg +1 -0
- package/images/icons/svg/arrow-up.svg +3 -0
- package/images/icons/svg/block.svg +5 -0
- package/images/icons/svg/calendar.svg +1 -0
- package/images/icons/svg/check-circle.svg +5 -0
- package/images/icons/svg/checkmark.svg +7 -0
- package/images/icons/svg/chevron-down.svg +11 -0
- package/images/icons/svg/chevron-left.svg +12 -0
- package/images/icons/svg/chevron-right.svg +12 -0
- package/images/icons/svg/chevron-up.svg +12 -0
- package/images/icons/svg/clipboard.svg +1 -0
- package/images/icons/svg/close.svg +1 -0
- package/images/icons/svg/divide.svg +13 -0
- package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
- package/images/icons/svg/download.svg +1 -0
- package/images/icons/svg/dropdown-arrow.svg +1 -0
- package/images/icons/svg/equals.svg +13 -0
- package/images/icons/svg/exclamation.svg +11 -0
- package/images/icons/svg/external.svg +1 -0
- package/images/icons/svg/file-download.svg +1 -0
- package/images/icons/svg/file-upload.svg +1 -0
- package/images/icons/svg/info.svg +20 -0
- package/images/icons/svg/manage-user-access.svg +8 -0
- package/images/icons/svg/multiply.svg +12 -0
- package/images/icons/svg/performance-feedback.svg +1 -0
- package/images/icons/svg/plus.svg +12 -0
- package/images/icons/svg/preview.svg +17 -0
- package/images/icons/svg/print.svg +1 -0
- package/images/icons/svg/registration.svg +8 -0
- package/images/icons/svg/reporting.svg +17 -0
- package/images/icons/svg/save-disk.svg +5 -0
- package/images/icons/svg/search.svg +1 -0
- package/images/icons/svg/subtract.svg +15 -0
- package/images/icons/svg/targeted-review.svg +15 -0
- package/images/icons/svg/tooltip-question.svg +1 -0
- package/images/icons/svg/trash.svg +1 -0
- package/images/icons/svg/upload.svg +1 -0
- package/images/us_flag_small.png +0 -0
- package/index.js +5 -0
- package/jest.config.js +138 -134
- package/lib/Chevron.jsx +32 -0
- package/lib/SvgComponents.jsx +197 -49
- package/package.json +62 -77
- package/session/logout.js +35 -2
- package/styles/_global.scss +63 -62
- package/styles/_main.scss +6 -0
- package/styles/_qpp-style.scss +0 -3
- package/styles/components/_accordion.scss +249 -246
- package/styles/components/_autocomplete.scss +0 -3
- package/styles/components/_modals.scss +9 -9
- package/styles/components/_spinner.scss +0 -2
- package/styles/components/_tables.scss +77 -67
- package/styles/components/_text.scss +102 -102
- package/styles/components/_variables.scss +12 -12
- package/styles/qppds/base/_backgrounds.scss +7 -0
- package/styles/qppds/base/_fonts.scss +24 -0
- package/styles/qppds/base/_icon.scss +31 -0
- package/styles/qppds/base/_layout.scss +5 -0
- package/styles/qppds/base/_typography.scss +78 -44
- package/styles/qppds/base/index.scss +4 -5
- package/styles/qppds/components/_alert.scss +101 -0
- package/styles/qppds/components/_breadcrumbs.scss +42 -6
- package/styles/qppds/components/_button.scss +129 -11
- package/styles/qppds/components/_card.scss +175 -0
- package/styles/qppds/components/_checkbox.scss +199 -0
- package/styles/qppds/components/_circular-loader.scss +47 -0
- package/styles/qppds/components/_details.scss +90 -0
- package/styles/qppds/components/_dropdown-menu.scss +125 -0
- package/styles/qppds/components/_dropdown.scss +7 -1
- package/styles/qppds/components/_footer.scss +606 -0
- package/styles/qppds/components/_gov-banner.scss +344 -0
- package/styles/qppds/components/_header.scss +913 -0
- package/styles/qppds/components/_link.scss +52 -0
- package/styles/qppds/components/_modal.scss +118 -0
- package/styles/qppds/components/_page-header.scss +65 -2
- package/styles/qppds/components/_pagination.scss +227 -0
- package/styles/qppds/components/_process-list.scss +104 -0
- package/styles/qppds/components/_radio-button.scss +184 -0
- package/styles/qppds/components/_search.scss +118 -0
- package/styles/{components → qppds/components}/_sidebar.scss +2 -0
- package/styles/qppds/components/_step-indicator.scss +190 -0
- package/styles/qppds/components/_table.scss +157 -0
- package/styles/qppds/components/_tabs.scss +197 -0
- package/styles/qppds/components/_text-input.scss +60 -0
- package/styles/qppds/components/index.scss +20 -0
- package/styles/{components → qppds/components}/sidebar/_links.scss +48 -1
- package/styles/qppds/components/sidebar/_select-role-dropdown.scss +21 -0
- package/styles/qppds/components/sidebar/_sidebar-animation.scss +125 -0
- package/styles/qppds/components/sidebar/_sidebar.scss +146 -0
- package/styles/{components → qppds/components}/sidebar/project-specific/_wi.scss +1 -37
- package/styles/qppds/settings/_functions.scss +3 -1
- package/styles/qppds/settings/mixins/_borders.scss +6 -0
- package/styles/qppds/settings/mixins/_focus.scss +28 -0
- package/styles/qppds/settings/mixins/_icons.scss +39 -4
- package/styles/qppds/settings/mixins/_index.scss +4 -0
- package/styles/qppds/settings/mixins/_layout.scss +46 -7
- package/styles/qppds/settings/mixins/_table.scss +91 -0
- package/styles/qppds/settings/mixins/_type.scss +89 -0
- package/styles/qppds/settings/variables/_color.scss +47 -1
- package/styles/qppds/settings/variables/_index.scss +2 -1
- package/styles/qppds/settings/variables/_layout.scss +34 -9
- package/styles/qppds/settings/variables/_type.scss +41 -0
- package/styles/qppds/settings/variables/_z-index.scss +8 -0
- package/styles/qppds/utilities/_background-color.scss +4 -0
- package/styles/qppds/utilities/_color.scss +28 -0
- package/styles/qppds/utilities/{_display-visability.scss → _display-visibility.scss} +8 -0
- package/styles/qppds/utilities/_flexbox.scss +113 -0
- package/styles/qppds/utilities/_font-family.scss +4 -0
- package/styles/qppds/utilities/_gap.scss +38 -0
- package/styles/qppds/utilities/_height.scss +79 -0
- package/styles/qppds/utilities/_list-style.scss +18 -0
- package/styles/qppds/utilities/_position.scss +24 -0
- package/styles/qppds/utilities/_text-align.scss +40 -0
- package/styles/qppds/utilities/_text-transform.scss +7 -0
- package/styles/qppds/utilities/_truncate.scss +5 -5
- package/styles/qppds/utilities/_vertical-align.scss +72 -0
- package/styles/qppds/utilities/_width.scss +38 -1
- package/styles/qppds/utilities/index.scss +8 -2
- package/styles/third-party/legacy-bootstrap/_dropdowns.scss +0 -1
- package/svgo.config.js +14 -0
- package/test/components/Accordion.test.js +4 -13
- package/test/components/ErrorUI.test.js +10 -46
- package/test/components/FooterUI.test.js +0 -30
- package/test/components/HeaderUI.test.js +33 -15
- package/test/components/Infotip.test.js +18 -12
- package/test/components/SessionDialogUI.test.js +55 -70
- package/test/components/SideNavUI.test.js +6 -13
- package/test-setup.js +1 -3
- package/webpack.config.js +29 -39
- package/webpack.config.react.js +7 -18
- package/.storybook/.babelrc +0 -4
- package/.storybook/main.js +0 -89
- package/.storybook/preview-head.html +0 -9
- package/.storybook/preview.js +0 -16
- package/components/Accordion/Accordion.stories.js +0 -20
- package/components/Breadcrumb/Breadcrumb.js +0 -58
- package/components/Breadcrumb/Breadcrumb.stories.js +0 -62
- package/components/Breadcrumb/LegacyBreadcrumb.js +0 -46
- package/components/Footer/Footer.stories.js +0 -22
- package/components/Footer/LegacyFooterUI.jsx +0 -194
- package/components/Header/Header.stories.js +0 -32
- package/components/InfoModal/InfoModal.stories.js +0 -98
- package/components/InfoModal/index.jsx +0 -104
- package/components/Infotip/Infotip.stories.js +0 -58
- package/components/NotificationBanner/NotificationBanner.stories.js +0 -24
- package/components/NotificationBanner/NotificationBannerUI.jsx +0 -282
- package/components/SideNav/SideNav.stories.js +0 -320
- package/components/Spinner/index.js +0 -9
- package/components/Tabs/TabsUI.jsx +0 -118
- package/components/Tabs/tabs.js +0 -36
- package/components/Tooltip/Tooltip.jsx +0 -88
- package/components/Tooltip/Tooltip.stories.js +0 -90
- package/components/Tooltip/index.js +0 -3
- package/components/Tooltip/position.js +0 -68
- package/components/UnwrappedSpinner/index.js +0 -8
- package/components/UnwrappedTabs/TabPanelUI.jsx +0 -16
- package/components/UnwrappedTabs/TabsUI.jsx +0 -82
- package/coverage/lcov-report/Accordion/index.html +0 -111
- package/coverage/lcov-report/Error/index.html +0 -126
- package/coverage/lcov-report/ScoreChart.jsx.html +0 -1025
- package/coverage/lcov-report/SideNav/Chart/ScoreChart.jsx.html +0 -1025
- package/coverage/lcov-report/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -1010
- package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -131
- package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -89
- package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +0 -1007
- package/coverage/lcov-report/components/SideNav/Content/index.html +0 -141
- package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -92
- package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -92
- package/coverage/lcov-report/components/SideNav/Links/index.html +0 -201
- package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1298
- package/coverage/lcov-report/components/SideNav/UI/index.html +0 -126
- package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -89
- package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -1319
- package/coverage/lcov-report/react/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -926
- package/styles/components/_footer.scss +0 -593
- package/styles/components/_header.scss +0 -526
- package/styles/components/sidebar/_sidebar-animation.scss +0 -85
- package/styles/components/sidebar/_sidebar.scss +0 -141
- package/test/components/Tooltip.test.js +0 -147
- package/test/components/__snapshots__/Accordion.test.js.snap +0 -11439
- /package/styles/{components → qppds/components}/sidebar/_animations.scss +0 -0
- /package/styles/{components → qppds/components}/sidebar/_cms.scss +0 -0
- /package/styles/{components → qppds/components}/sidebar/_details.scss +0 -0
- /package/styles/{components → qppds/components}/sidebar/_sidebar-tooltip.scss +0 -0
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">67.
|
|
33
|
+
<span class="strong">67.85% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
35
|
<span class='fraction'>19/28</span>
|
|
36
36
|
</div>
|
|
@@ -54,6 +54,12 @@
|
|
|
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
64
|
<div class='status-line medium'></div>
|
|
59
65
|
<pre><table class="coverage">
|
|
@@ -318,11 +324,8 @@
|
|
|
318
324
|
<a name='L259'></a><a href='#L259'>259</a>
|
|
319
325
|
<a name='L260'></a><a href='#L260'>260</a>
|
|
320
326
|
<a name='L261'></a><a href='#L261'>261</a>
|
|
321
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
322
|
-
<
|
|
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
326
329
|
<span class="cline-any cline-neutral"> </span>
|
|
327
330
|
<span class="cline-any cline-neutral"> </span>
|
|
328
331
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -340,31 +343,31 @@
|
|
|
340
343
|
<span class="cline-any cline-neutral"> </span>
|
|
341
344
|
<span class="cline-any cline-neutral"> </span>
|
|
342
345
|
<span class="cline-any cline-neutral"> </span>
|
|
343
|
-
<span class="cline-any cline-yes">
|
|
346
|
+
<span class="cline-any cline-yes">19x</span>
|
|
344
347
|
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-yes">
|
|
346
|
-
<span class="cline-any cline-yes">
|
|
347
|
-
<span class="cline-any cline-yes">
|
|
348
|
-
<span class="cline-any cline-yes">
|
|
349
|
-
<span class="cline-any cline-yes">
|
|
350
|
-
<span class="cline-any cline-yes">
|
|
351
|
-
<span class="cline-any cline-yes">
|
|
352
|
-
<span class="cline-any cline-yes">
|
|
353
|
-
<span class="cline-any cline-yes">
|
|
354
|
-
<span class="cline-any cline-yes">
|
|
348
|
+
<span class="cline-any cline-yes">19x</span>
|
|
349
|
+
<span class="cline-any cline-yes">19x</span>
|
|
350
|
+
<span class="cline-any cline-yes">19x</span>
|
|
351
|
+
<span class="cline-any cline-yes">19x</span>
|
|
352
|
+
<span class="cline-any cline-yes">19x</span>
|
|
353
|
+
<span class="cline-any cline-yes">19x</span>
|
|
354
|
+
<span class="cline-any cline-yes">19x</span>
|
|
355
|
+
<span class="cline-any cline-yes">19x</span>
|
|
356
|
+
<span class="cline-any cline-yes">19x</span>
|
|
357
|
+
<span class="cline-any cline-yes">19x</span>
|
|
355
358
|
<span class="cline-any cline-neutral"> </span>
|
|
356
|
-
<span class="cline-any cline-yes">
|
|
359
|
+
<span class="cline-any cline-yes">19x</span>
|
|
357
360
|
<span class="cline-any cline-yes">8x</span>
|
|
358
361
|
<span class="cline-any cline-neutral"> </span>
|
|
359
362
|
<span class="cline-any cline-neutral"> </span>
|
|
360
363
|
<span class="cline-any cline-neutral"> </span>
|
|
361
364
|
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-yes">
|
|
365
|
+
<span class="cline-any cline-yes">11x</span>
|
|
363
366
|
<span class="cline-any cline-neutral"> </span>
|
|
364
367
|
<span class="cline-any cline-neutral"> </span>
|
|
365
368
|
<span class="cline-any cline-neutral"> </span>
|
|
366
369
|
<span class="cline-any cline-neutral"> </span>
|
|
367
|
-
<span class="cline-any cline-yes">
|
|
370
|
+
<span class="cline-any cline-yes">11x</span>
|
|
368
371
|
<span class="cline-any cline-neutral"> </span>
|
|
369
372
|
<span class="cline-any cline-neutral"> </span>
|
|
370
373
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -380,9 +383,6 @@
|
|
|
380
383
|
<span class="cline-any cline-neutral"> </span>
|
|
381
384
|
<span class="cline-any cline-neutral"> </span>
|
|
382
385
|
<span class="cline-any cline-neutral"> </span>
|
|
383
|
-
<span class="cline-any cline-neutral"> </span>
|
|
384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
386
386
|
<span class="cline-any cline-yes">1x</span>
|
|
387
387
|
<span class="cline-any cline-yes">1x</span>
|
|
388
388
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -407,9 +407,6 @@
|
|
|
407
407
|
<span class="cline-any cline-yes">78x</span>
|
|
408
408
|
<span class="cline-any cline-neutral"> </span>
|
|
409
409
|
<span class="cline-any cline-yes">78x</span>
|
|
410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
411
|
-
<span class="cline-any cline-neutral"> </span>
|
|
412
|
-
<span class="cline-any cline-neutral"> </span>
|
|
413
410
|
<span class="cline-any cline-yes">76x</span>
|
|
414
411
|
<span class="cline-any cline-neutral"> </span>
|
|
415
412
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -428,9 +425,6 @@
|
|
|
428
425
|
<span class="cline-any cline-no"> </span>
|
|
429
426
|
<span class="cline-any cline-neutral"> </span>
|
|
430
427
|
<span class="cline-any cline-no"> </span>
|
|
431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
434
428
|
<span class="cline-any cline-no"> </span>
|
|
435
429
|
<span class="cline-any cline-neutral"> </span>
|
|
436
430
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -446,9 +440,9 @@
|
|
|
446
440
|
<span class="cline-any cline-neutral"> </span>
|
|
447
441
|
<span class="cline-any cline-neutral"> </span>
|
|
448
442
|
<span class="cline-any cline-neutral"> </span>
|
|
449
|
-
<span class="cline-any cline-yes">
|
|
443
|
+
<span class="cline-any cline-yes">14x</span>
|
|
450
444
|
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-yes">
|
|
445
|
+
<span class="cline-any cline-yes">14x</span>
|
|
452
446
|
<span class="cline-any cline-neutral"> </span>
|
|
453
447
|
<span class="cline-any cline-neutral"> </span>
|
|
454
448
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -462,9 +456,6 @@
|
|
|
462
456
|
<span class="cline-any cline-neutral"> </span>
|
|
463
457
|
<span class="cline-any cline-yes">5x</span>
|
|
464
458
|
<span class="cline-any cline-neutral"> </span>
|
|
465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
468
459
|
<span class="cline-any cline-yes">5x</span>
|
|
469
460
|
<span class="cline-any cline-neutral"> </span>
|
|
470
461
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -540,11 +531,18 @@
|
|
|
540
531
|
<span class="cline-any cline-neutral"> </span>
|
|
541
532
|
<span class="cline-any cline-neutral"> </span>
|
|
542
533
|
<span class="cline-any cline-neutral"> </span>
|
|
534
|
+
<span class="cline-any cline-yes">22x</span>
|
|
535
|
+
<span class="cline-any cline-neutral"> </span>
|
|
536
|
+
<span class="cline-any cline-neutral"> </span>
|
|
537
|
+
<span class="cline-any cline-neutral"> </span>
|
|
538
|
+
<span class="cline-any cline-neutral"> </span>
|
|
539
|
+
<span class="cline-any cline-neutral"> </span>
|
|
540
|
+
<span class="cline-any cline-neutral"> </span>
|
|
541
|
+
<span class="cline-any cline-neutral"> </span>
|
|
543
542
|
<span class="cline-any cline-neutral"> </span>
|
|
544
543
|
<span class="cline-any cline-neutral"> </span>
|
|
545
544
|
<span class="cline-any cline-neutral"> </span>
|
|
546
545
|
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-yes">23x</span>
|
|
548
546
|
<span class="cline-any cline-neutral"> </span>
|
|
549
547
|
<span class="cline-any cline-neutral"> </span>
|
|
550
548
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -588,11 +586,12 @@
|
|
|
588
586
|
<span class="cline-any cline-neutral"> </span>
|
|
589
587
|
<span class="cline-any cline-neutral"> </span>
|
|
590
588
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import React, { Component } from 'react';
|
|
591
|
-
import InfoModal from './InfoModal';
|
|
592
589
|
import PropTypes from 'prop-types';
|
|
593
590
|
import cookie from 'cookie';
|
|
594
591
|
import retry from 'retry';
|
|
595
592
|
import jwtDecode from 'jwt-decode';
|
|
593
|
+
|
|
594
|
+
import Modal from './Modal';
|
|
596
595
|
import RefreshSession from '../session/refresh';
|
|
597
596
|
import LogoutSession from '../session/logout';
|
|
598
597
|
import fetchTtl from '../session/ttl';
|
|
@@ -600,257 +599,252 @@ import fetchTtl from '../session/ttl';
|
|
|
600
599
|
const fetchTtlIntervalMs = 60000;
|
|
601
600
|
|
|
602
601
|
export default class SessionDialogUI extends Component {
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
602
|
+
/**
|
|
603
|
+
* Create a SessionDialogUI component.
|
|
604
|
+
* @param {object} props - Configuration options. See SessionDialog for more
|
|
605
|
+
*/
|
|
606
|
+
constructor(props) {
|
|
607
|
+
super(props);
|
|
609
608
|
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
609
|
+
this.handleOpenModal = this.handleOpenModal.bind(this);
|
|
610
|
+
this.handleCloseModal = this.handleCloseModal.bind(this);
|
|
611
|
+
this.refreshSession = this.refreshSession.bind(this);
|
|
612
|
+
this.signOut = this.signOut.bind(this);
|
|
613
|
+
this.startTimer = this.startTimer.bind(this);
|
|
614
|
+
this.shouldShowDialog = this.shouldShowDialog.bind(this);
|
|
615
|
+
this.shouldSignOut = this.shouldSignOut.bind(this);
|
|
616
|
+
this.minutesUntil = this.minutesUntil.bind(this);
|
|
617
|
+
this.checkExpiry = this.checkExpiry.bind(this);
|
|
618
|
+
this.onInterval = this.onInterval.bind(this);
|
|
620
619
|
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
620
|
+
if (props.showImmediate === true) {
|
|
621
|
+
this.state = {
|
|
622
|
+
showModal: true,
|
|
623
|
+
showError: false,
|
|
624
|
+
};
|
|
625
|
+
} else {
|
|
626
|
+
this.state = {
|
|
627
|
+
showModal: false,
|
|
628
|
+
showError: false,
|
|
629
|
+
};
|
|
631
630
|
|
|
632
|
-
|
|
633
|
-
}
|
|
631
|
+
this.startTimer();
|
|
634
632
|
}
|
|
633
|
+
}
|
|
635
634
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
if (
|
|
645
|
-
cookies.hasOwnProperty('qpp_auth_token') &&
|
|
646
|
-
cookies.qpp_auth_token
|
|
647
|
-
) {
|
|
648
|
-
// See https://tools.ietf.org/html/rfc7519
|
|
649
|
-
// `exp` is a NumericDate representing "seconds since the epoch"
|
|
650
|
-
// and it needs to be milliseconds to get a JavaScript date from it.
|
|
651
|
-
const { exp } = jwtDecode(cookies.qpp_auth_token);
|
|
652
|
-
expiry = new Date(exp * 1000);
|
|
653
|
-
}
|
|
635
|
+
/**
|
|
636
|
+
* Extracts the token exp value as a JavaScript date.
|
|
637
|
+
* @param {Object} cookies - An object representation of the cookie store
|
|
638
|
+
* @returns {(date|null)} The token expiration date, if found
|
|
639
|
+
*/
|
|
640
|
+
getTokenExpiry(cookies) {
|
|
641
|
+
let expiry = null;
|
|
654
642
|
|
|
655
|
-
|
|
643
|
+
if (cookies.hasOwnProperty('qpp_auth_token') && cookies.qpp_auth_token) {
|
|
644
|
+
// See https://tools.ietf.org/html/rfc7519
|
|
645
|
+
// `exp` is a NumericDate representing "seconds since the epoch"
|
|
646
|
+
// and it needs to be milliseconds to get a JavaScript date from it.
|
|
647
|
+
const { exp } = jwtDecode(cookies.qpp_auth_token);
|
|
648
|
+
expiry = new Date(exp * 1000);
|
|
656
649
|
}
|
|
657
650
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
<span class="
|
|
662
|
-
|
|
663
|
-
<span class="cstat-no" title="statement not covered" >
|
|
664
|
-
<span class="cstat-no" title="statement not covered" >
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
<span class="cstat-no" title="statement not covered" >
|
|
668
|
-
|
|
651
|
+
return expiry;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
<span class="fstat-no" title="function not covered" > ch</span>eckExpiry(expiry) {
|
|
655
|
+
<span class="cstat-no" title="statement not covered" > if (expiry) {</span>
|
|
656
|
+
<span class="cstat-no" title="statement not covered" > if (this.shouldShowDialog(expiry)) {</span>
|
|
657
|
+
<span class="cstat-no" title="statement not covered" > this.handleOpenModal();</span>
|
|
658
|
+
} else <span class="cstat-no" title="statement not covered" >if (this.shouldSignOut(expiry)) {</span>
|
|
659
|
+
<span class="cstat-no" title="statement not covered" > this.signOut();</span>
|
|
660
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
|
|
661
|
+
}
|
|
662
|
+
} else {
|
|
663
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
|
|
669
664
|
}
|
|
665
|
+
}
|
|
670
666
|
|
|
671
|
-
|
|
672
|
-
|
|
667
|
+
onInterval() {
|
|
668
|
+
const cookies = cookie.parse(document.cookie);
|
|
673
669
|
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
minTimeout: 1000,
|
|
682
|
-
maxTimeout: 1000
|
|
683
|
-
});
|
|
670
|
+
if (cookies.hasOwnProperty('qpp_auth_token') && cookies.qpp_auth_token) {
|
|
671
|
+
const operation = retry.operation({
|
|
672
|
+
retries: 5,
|
|
673
|
+
factor: 1,
|
|
674
|
+
minTimeout: 1000,
|
|
675
|
+
maxTimeout: 1000,
|
|
676
|
+
});
|
|
684
677
|
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
<span class="cstat-no" title="statement not covered" >
|
|
690
|
-
|
|
691
|
-
<span class="cstat-no" title="statement not covered" >
|
|
692
|
-
|
|
693
|
-
<span class="cstat-no" title="statement not covered" >
|
|
694
|
-
|
|
695
|
-
<span class="cstat-no" title="statement not covered" >
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
<span class="cstat-no" title="statement not covered" > this.setState({</span>
|
|
700
|
-
showModal: false,
|
|
701
|
-
showError: true
|
|
702
|
-
});
|
|
703
|
-
});
|
|
678
|
+
operation.attempt(() => {
|
|
679
|
+
fetchTtl(cookies.qpp_auth_token)
|
|
680
|
+
.then(this.checkExpiry)
|
|
681
|
+
.catch(<span class="fstat-no" title="function not covered" >(e</span>rror) => {
|
|
682
|
+
<span class="cstat-no" title="statement not covered" > if (operation.retry(error)) {</span>
|
|
683
|
+
// try again before giving up
|
|
684
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
685
|
+
}
|
|
686
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
|
|
687
|
+
// sign an inactive user out
|
|
688
|
+
<span class="cstat-no" title="statement not covered" > this.forceTimeoutHandle = setTimeout(this.signOut, 120 * 1000);</span>
|
|
689
|
+
<span class="cstat-no" title="statement not covered" > this.setState({</span>
|
|
690
|
+
showModal: false,
|
|
691
|
+
showError: true,
|
|
704
692
|
});
|
|
705
|
-
|
|
693
|
+
});
|
|
694
|
+
});
|
|
706
695
|
}
|
|
696
|
+
}
|
|
707
697
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
698
|
+
/**
|
|
699
|
+
* Checks whether the user is within a specified number of minutes before
|
|
700
|
+
* their session token expires. If so, show a warning dialog. If the
|
|
701
|
+
* expiration has been reached, sign the user out.
|
|
702
|
+
*/
|
|
703
|
+
startTimer() {
|
|
704
|
+
clearInterval(this.warningInterval);
|
|
715
705
|
|
|
716
|
-
|
|
717
|
-
|
|
706
|
+
this.warningInterval = setInterval(this.onInterval, fetchTtlIntervalMs);
|
|
707
|
+
}
|
|
718
708
|
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
709
|
+
/**
|
|
710
|
+
* Returns whether the current time is within the timeout range of expiry.
|
|
711
|
+
* @param {date|number} expiry - Expiration date to check against
|
|
712
|
+
* @returns {boolean}
|
|
713
|
+
*/
|
|
714
|
+
shouldShowDialog(expiry) {
|
|
715
|
+
if (typeof expiry === 'number') {
|
|
716
|
+
const minutesLeft = expiry / 60;
|
|
727
717
|
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
!this.state.showModal &&
|
|
735
|
-
this.minutesUntil(expiry) <= this.props.warningTimeout
|
|
736
|
-
);
|
|
737
|
-
}
|
|
718
|
+
return !this.state.showModal && minutesLeft <= this.props.warningTimeout;
|
|
719
|
+
} else {
|
|
720
|
+
return (
|
|
721
|
+
!this.state.showModal &&
|
|
722
|
+
this.minutesUntil(expiry) <= this.props.warningTimeout
|
|
723
|
+
);
|
|
738
724
|
}
|
|
725
|
+
}
|
|
739
726
|
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
}
|
|
727
|
+
/**
|
|
728
|
+
* Returns whether the current time has reached the expiration date.
|
|
729
|
+
* @param {date|number} expiry - Expiration date to check against
|
|
730
|
+
* @returns {boolean}
|
|
731
|
+
*/
|
|
732
|
+
shouldSignOut(expiry) {
|
|
733
|
+
if (typeof expiry === 'number') {
|
|
734
|
+
return expiry <= 1;
|
|
735
|
+
} else {
|
|
736
|
+
return this.minutesUntil(expiry) <= 0;
|
|
751
737
|
}
|
|
738
|
+
}
|
|
752
739
|
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
740
|
+
/**
|
|
741
|
+
* Returns number of minutes until the expiration date.
|
|
742
|
+
* @param {date} expiry - Expiration date to check against
|
|
743
|
+
* @returns {number}
|
|
744
|
+
*/
|
|
745
|
+
minutesUntil(expiry) {
|
|
746
|
+
return (expiry - new Date().getTime()) / 60000;
|
|
747
|
+
}
|
|
761
748
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
749
|
+
/**
|
|
750
|
+
* Sets the modal state to visible.
|
|
751
|
+
*/
|
|
752
|
+
handleOpenModal() {
|
|
753
|
+
this.setState({
|
|
754
|
+
showModal: true,
|
|
755
|
+
showError: false,
|
|
756
|
+
});
|
|
757
|
+
}
|
|
771
758
|
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
759
|
+
/**
|
|
760
|
+
* Sets the modal state to hidden.
|
|
761
|
+
*/
|
|
762
|
+
handleCloseModal() {
|
|
763
|
+
this.setState({
|
|
764
|
+
showModal: false,
|
|
765
|
+
showError: false,
|
|
766
|
+
});
|
|
767
|
+
}
|
|
781
768
|
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
769
|
+
/**
|
|
770
|
+
* Handles the user requesting their session be extended.
|
|
771
|
+
*/
|
|
772
|
+
refreshSession() {
|
|
773
|
+
RefreshSession({
|
|
774
|
+
window,
|
|
775
|
+
onSuccess: () => {
|
|
776
|
+
this.startTimer();
|
|
777
|
+
},
|
|
778
|
+
});
|
|
792
779
|
|
|
793
|
-
|
|
794
|
-
|
|
780
|
+
this.handleCloseModal();
|
|
781
|
+
}
|
|
795
782
|
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
<span class="cstat-no" title="statement not covered" >
|
|
802
|
-
}
|
|
803
|
-
LogoutSession(window);
|
|
804
|
-
this.handleCloseModal();
|
|
783
|
+
/**
|
|
784
|
+
* Handles the user requesting their session be ended.
|
|
785
|
+
*/
|
|
786
|
+
signOut() {
|
|
787
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.forceTimeoutHandle) {
|
|
788
|
+
<span class="cstat-no" title="statement not covered" > clearTimeout(this.forceTimeoutHandle);</span>
|
|
805
789
|
}
|
|
790
|
+
LogoutSession(window);
|
|
791
|
+
this.handleCloseModal();
|
|
792
|
+
}
|
|
806
793
|
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
794
|
+
render() {
|
|
795
|
+
return (
|
|
796
|
+
<React.Fragment>
|
|
797
|
+
<Modal
|
|
798
|
+
useDesignSystem
|
|
799
|
+
title="You will be signed out within two minutes"
|
|
800
|
+
isOpen={this.state.showModal}
|
|
801
|
+
primary={{
|
|
802
|
+
title: 'Keep me signed in',
|
|
803
|
+
onClick: this.refreshSession,
|
|
804
|
+
}}
|
|
805
|
+
secondary={{
|
|
806
|
+
title: 'Sign me out now',
|
|
807
|
+
onClick: this.signOut,
|
|
808
|
+
}}
|
|
809
|
+
onRequestClose={this.handleCloseModal}
|
|
810
|
+
>
|
|
811
|
+
<p>
|
|
812
|
+
You have been inactive for thirty minutes. For your security, we
|
|
813
|
+
will sign you out automatically.
|
|
814
|
+
</p>
|
|
815
|
+
</Modal>
|
|
816
|
+
|
|
817
|
+
<Modal
|
|
818
|
+
useDesignSystem
|
|
819
|
+
title="Technical Difficulties"
|
|
820
|
+
isOpen={this.state.showError}
|
|
821
|
+
primary={{
|
|
822
|
+
title: 'Sign Out',
|
|
823
|
+
onClick: this.signOut,
|
|
824
|
+
}}
|
|
825
|
+
onRequestClose={this.signOut}
|
|
826
|
+
>
|
|
827
|
+
<p>
|
|
828
|
+
We’re experiencing technical difficulties. Please log in again to
|
|
829
|
+
continue. For your security, we will sign you out automatically
|
|
830
|
+
within two minutes.
|
|
831
|
+
</p>
|
|
832
|
+
</Modal>
|
|
833
|
+
</React.Fragment>
|
|
834
|
+
);
|
|
835
|
+
}
|
|
842
836
|
}
|
|
843
837
|
|
|
844
838
|
SessionDialogUI.propTypes = {
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
839
|
+
showImmediate: PropTypes.bool,
|
|
840
|
+
warningTimeout: PropTypes.number,
|
|
841
|
+
appElement: PropTypes.string,
|
|
848
842
|
};
|
|
849
843
|
|
|
850
844
|
SessionDialogUI.defaultProps = {
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
845
|
+
showImmediate: false,
|
|
846
|
+
warningTimeout: 2,
|
|
847
|
+
appElement: undefined,
|
|
854
848
|
};
|
|
855
849
|
</pre></td></tr></table></pre>
|
|
856
850
|
|
|
@@ -858,10 +852,9 @@ SessionDialogUI.defaultProps = {
|
|
|
858
852
|
</div><!-- /wrapper -->
|
|
859
853
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
860
854
|
Code coverage generated by
|
|
861
|
-
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
862
|
-
at Mon
|
|
855
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
856
|
+
at Mon Mar 06 2023 14:49:52 GMT-0800 (Pacific Standard Time)
|
|
863
857
|
</div>
|
|
864
|
-
</div>
|
|
865
858
|
<script src="../../prettify.js"></script>
|
|
866
859
|
<script>
|
|
867
860
|
window.onload = function () {
|