qpp-style 9.52.0 → 9.53.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.
- package/components/Header/HeaderUI.jsx +1 -1
- package/components/SideNav/Content/LevelOneContent.jsx +22 -21
- package/components/SideNav/Content/SelectRole/utils.js +13 -0
- package/components/SideNav/UI/SideNavUI.jsx +82 -24
- package/coverage/clover.xml +157 -131
- package/coverage/coverage-final.json +10 -10
- package/coverage/lcov-report/components/Dropdown/index.html +116 -0
- package/coverage/lcov-report/components/Dropdown/index.js.html +289 -0
- package/coverage/lcov-report/components/SanitizedContent/index.html +19 -19
- package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +434 -437
- package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +163 -0
- package/coverage/lcov-report/components/SideNav/AnimationGroup/index.html +116 -0
- package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +265 -0
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +35 -20
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.js.html +298 -0
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +229 -208
- package/coverage/lcov-report/components/SideNav/Content/index.html +131 -0
- package/coverage/lcov-report/components/SideNav/Content/index.js.html +94 -0
- package/coverage/lcov-report/components/SideNav/Details/IndividualDetails.jsx.html +136 -0
- package/coverage/lcov-report/components/SideNav/Details/PracticeDetails.jsx.html +235 -0
- package/coverage/lcov-report/components/SideNav/Details/index.html +146 -0
- package/coverage/lcov-report/components/SideNav/Details/index.js.html +97 -0
- package/coverage/lcov-report/components/SideNav/Links/CmsSwitchLink.jsx.html +205 -0
- package/coverage/lcov-report/components/SideNav/Links/NavItemInline.jsx.html +244 -0
- package/coverage/lcov-report/components/SideNav/Links/NavLinkContainer.jsx.html +184 -0
- package/coverage/lcov-report/components/SideNav/Links/NavLinkDrawer.jsx.html +988 -0
- package/coverage/lcov-report/components/SideNav/Links/NavLinkInline.jsx.html +418 -0
- package/coverage/lcov-report/components/SideNav/Links/NavLinkToggle.jsx.html +184 -0
- package/coverage/lcov-report/components/SideNav/Links/index.html +206 -0
- package/coverage/lcov-report/components/SideNav/Links/index.js.html +124 -0
- package/coverage/lcov-report/components/SideNav/UI/DynamicContent.jsx.html +628 -0
- package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +712 -0
- package/coverage/lcov-report/components/SideNav/UI/default-markup.js.html +97 -0
- package/coverage/lcov-report/components/SideNav/UI/index.html +161 -0
- package/coverage/lcov-report/components/SideNav/UI/index.js.html +94 -0
- package/coverage/lcov-report/components/SideNav/helpers.js.html +77 -1157
- package/coverage/lcov-report/components/SideNav/index.html +22 -22
- package/coverage/lcov-report/index.html +46 -46
- package/coverage/lcov-report/lib/SvgComponents.jsx.html +1225 -1246
- package/coverage/lcov-report/lib/index.html +22 -37
- package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
- package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Button/index.html +1 -1
- package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
- package/coverage/lcov-report/react/components/Dropdown/index.html +21 -21
- package/coverage/lcov-report/react/components/Dropdown/index.js.html +27 -27
- package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
- package/coverage/lcov-report/react/components/Error/index.html +1 -1
- package/coverage/lcov-report/react/components/Footer/FooterTooltip.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +1 -1
- package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +2 -2
- package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/PreviewBanner.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Header/header.js.html +1 -1
- package/coverage/lcov-report/react/components/Header/hooks.js.html +1 -1
- package/coverage/lcov-report/react/components/Header/index.html +1 -1
- package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +1 -1
- package/coverage/lcov-report/react/components/HeaderSearchBar/index.html +1 -1
- package/coverage/lcov-report/react/components/HeaderSearchBar/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/InfotipContent.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
- package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Modal/index.html +1 -1
- package/coverage/lcov-report/react/components/Modal/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +1 -1
- package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +1 -1
- package/coverage/lcov-report/react/components/NotificationBanner/index.html +1 -1
- package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +1 -1
- package/coverage/lcov-report/react/components/SanitizedContent/index.html +1 -1
- package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +7 -7
- package/coverage/lcov-report/react/components/Session/Session.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Session/SessionDialogWrapped.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Session/index.html +1 -1
- package/coverage/lcov-report/react/components/Session/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +3 -3
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +47 -44
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +31 -31
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +45 -45
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +105 -66
- package/coverage/lcov-report/react/components/SideNav/Content/index.html +12 -12
- package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Details/index.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +4 -4
- package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/UI/DynamicContent.jsx.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +236 -62
- package/coverage/lcov-report/react/components/SideNav/UI/default-markup.js.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/UI/index.html +20 -20
- package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/helpers.js.html +4 -4
- package/coverage/lcov-report/react/components/SideNav/index.html +1 -1
- package/coverage/lcov-report/react/components/SideNav/index.js.html +1 -1
- package/coverage/lcov-report/react/components/hooks/index.html +1 -1
- package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +1 -1
- package/coverage/lcov-report/react/index.html +1 -1
- package/coverage/lcov-report/react/index.js.html +1 -1
- package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
- package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +2 -2
- package/coverage/lcov-report/react/lib/index.html +1 -1
- package/coverage/lcov-report/react/session/index.html +1 -1
- package/coverage/lcov-report/react/session/index.js.html +1 -1
- package/coverage/lcov-report/react/session/logout.js.html +1 -1
- package/coverage/lcov-report/react/session/refresh.js.html +1 -1
- package/coverage/lcov-report/react/session/ttl.js.html +1 -1
- package/coverage/lcov.info +310 -255
- 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.LICENSE.txt +0 -10
- package/dist/react/index.js.map +1 -1
- package/package.json +15 -15
- package/test/components/SideNavUI.test.js +88 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qpp-style",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.53.0",
|
|
4
4
|
"description": "Shared style guide across the QPP program.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"homepage": "https://cmsgov.github.io/qpp-style",
|
|
@@ -19,41 +19,41 @@
|
|
|
19
19
|
"lint": "eslint 'components/**/*.{js,jsx}'"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@babel/eslint-parser": "^7.
|
|
22
|
+
"@babel/eslint-parser": "^7.29.7",
|
|
23
23
|
"@svgr/webpack": "^8.0.1",
|
|
24
24
|
"@testing-library/react": "^16.3.2",
|
|
25
|
-
"@types/node": "^24.
|
|
25
|
+
"@types/node": "^24.13.3",
|
|
26
26
|
"@types/webpack": "^5.28.5",
|
|
27
|
-
"autoprefixer": "^10.5.
|
|
28
|
-
"babel-jest": "^30.
|
|
27
|
+
"autoprefixer": "^10.5.2",
|
|
28
|
+
"babel-jest": "^30.4.1",
|
|
29
29
|
"babel-loader": "^10.1.1",
|
|
30
30
|
"babel-plugin-transform-es2015-modules-umd": "^6.24.1",
|
|
31
31
|
"copy-webpack-plugin": "^14.0.0",
|
|
32
32
|
"css-loader": "^7.1.4",
|
|
33
|
-
"eslint": "^9.39.
|
|
33
|
+
"eslint": "^9.39.5",
|
|
34
34
|
"eslint-config-prettier": "^10.1.8",
|
|
35
35
|
"eslint-plugin-babel": "^5.3.1",
|
|
36
|
-
"eslint-plugin-prettier": "^5.5.
|
|
36
|
+
"eslint-plugin-prettier": "^5.5.6",
|
|
37
37
|
"eslint-plugin-react": "^7.37.5",
|
|
38
38
|
"eslint-webpack-plugin": "^6.0.0",
|
|
39
39
|
"gh-pages": "^6.3.0",
|
|
40
40
|
"husky": "^9.1.7",
|
|
41
|
-
"jest": "^30.
|
|
42
|
-
"jest-environment-jsdom": "^30.
|
|
41
|
+
"jest": "^30.4.2",
|
|
42
|
+
"jest-environment-jsdom": "^30.4.1",
|
|
43
43
|
"jsonwebtoken": "^9.0.3",
|
|
44
44
|
"lint-staged": "^16.4.0",
|
|
45
45
|
"mini-css-extract-plugin": "^2.10.2",
|
|
46
|
-
"prettier": "^3.
|
|
46
|
+
"prettier": "^3.9.5",
|
|
47
47
|
"react": "^18.3.1",
|
|
48
48
|
"react-dom": "^18.3.1",
|
|
49
49
|
"rimraf": "^6.1.3",
|
|
50
|
-
"sass": "^1.
|
|
51
|
-
"sass-loader": "^16.0.
|
|
50
|
+
"sass": "^1.101.0",
|
|
51
|
+
"sass-loader": "^16.0.8",
|
|
52
52
|
"style-loader": "^4.0.0",
|
|
53
53
|
"svgo": "^4.0.1",
|
|
54
54
|
"svgo-loader": "^4.0.0",
|
|
55
|
-
"terser-webpack-plugin": "^5.
|
|
56
|
-
"webpack": "^5.
|
|
55
|
+
"terser-webpack-plugin": "^5.6.1",
|
|
56
|
+
"webpack": "^5.108.4",
|
|
57
57
|
"webpack-cli": "^6.0.1"
|
|
58
58
|
},
|
|
59
59
|
"lint-staged": {
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"url": "https://github.com/CMSgov/qpp-style/issues"
|
|
85
85
|
},
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"@ariakit/react": "^0.4.
|
|
87
|
+
"@ariakit/react": "^0.4.32",
|
|
88
88
|
"@material-design-icons/svg": "^0.14.15",
|
|
89
89
|
"cookie": "^1.1.1",
|
|
90
90
|
"jwt-decode": "^4.0.0",
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { render } from '@testing-library/react';
|
|
1
|
+
import { render, fireEvent, waitFor, screen } from '@testing-library/react';
|
|
2
2
|
import jwt from 'jsonwebtoken';
|
|
3
3
|
|
|
4
4
|
import { SideNavUI } from '../../components/SideNav/UI';
|
|
5
5
|
|
|
6
6
|
describe('SideNavUI', () => {
|
|
7
|
+
afterEach(() => {
|
|
8
|
+
localStorage.clear();
|
|
9
|
+
document.cookie = 'selected_role=; expires=Thu, 01 Jan 1970 00:00:00 UTC; Path=/;';
|
|
10
|
+
delete global.fetch;
|
|
11
|
+
window.history.pushState({}, '', '/');
|
|
12
|
+
});
|
|
13
|
+
|
|
7
14
|
it('renders the sidebar HTML', () => {
|
|
8
15
|
const token = jwt.sign(
|
|
9
16
|
{
|
|
@@ -19,4 +26,84 @@ describe('SideNavUI', () => {
|
|
|
19
26
|
const { container } = render(<SideNavUI svgIcons="" />);
|
|
20
27
|
expect(container.querySelector('aside')).toBeDefined();
|
|
21
28
|
});
|
|
29
|
+
|
|
30
|
+
it('re-fetches /config/side-navigation with the new role when the role stays on the same page', async () => {
|
|
31
|
+
localStorage.setItem('selectedUserRole', 'QPP User');
|
|
32
|
+
const sideNavOptions = [
|
|
33
|
+
{ name: 'QPP User', value: 'QPP User' },
|
|
34
|
+
{ name: 'Reviewer', value: 'Reviewer' },
|
|
35
|
+
];
|
|
36
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
37
|
+
json: () =>
|
|
38
|
+
Promise.resolve({
|
|
39
|
+
markup: '<nav>content</nav>',
|
|
40
|
+
sideNavOptions,
|
|
41
|
+
hasMultipleRoles: true,
|
|
42
|
+
}),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Reviewer's default page is /user/reviewers - starting there means
|
|
46
|
+
// selecting Reviewer will NOT trigger a redirect, so the in-place
|
|
47
|
+
// refetch should still happen.
|
|
48
|
+
window.history.pushState({}, '', '/user/reviewers');
|
|
49
|
+
|
|
50
|
+
render(<SideNavUI svgIcons="" />);
|
|
51
|
+
|
|
52
|
+
await waitFor(() => expect(global.fetch).toHaveBeenCalled());
|
|
53
|
+
|
|
54
|
+
const dropdown = await screen.findByLabelText('Select User Role');
|
|
55
|
+
global.fetch.mockClear();
|
|
56
|
+
|
|
57
|
+
fireEvent.change(dropdown, { target: { value: 'Reviewer' } });
|
|
58
|
+
|
|
59
|
+
await waitFor(() =>
|
|
60
|
+
expect(global.fetch).toHaveBeenCalledWith(
|
|
61
|
+
expect.stringContaining('/config/side-navigation?role=Reviewer')
|
|
62
|
+
)
|
|
63
|
+
);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('skips the in-place refetch when the role change triggers a redirect to a different page', async () => {
|
|
67
|
+
localStorage.setItem('selectedUserRole', 'QPP User');
|
|
68
|
+
const sideNavOptions = [
|
|
69
|
+
{ name: 'QPP User', value: 'QPP User' },
|
|
70
|
+
{ name: 'Reviewer', value: 'Reviewer' },
|
|
71
|
+
];
|
|
72
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
73
|
+
json: () =>
|
|
74
|
+
Promise.resolve({
|
|
75
|
+
markup: '<nav>content</nav>',
|
|
76
|
+
sideNavOptions,
|
|
77
|
+
hasMultipleRoles: true,
|
|
78
|
+
}),
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// QPP User's default page is /user/submissions, which differs from
|
|
82
|
+
// Reviewer's default page (/user/reviewers), so selecting Reviewer
|
|
83
|
+
// triggers a redirect (redirectPage calls window.location.assign, which
|
|
84
|
+
// jsdom doesn't implement and logs a benign "not implemented" error -
|
|
85
|
+
// that's expected here and safe to ignore). The remount that follows a
|
|
86
|
+
// real page navigation is responsible for fetching fresh config, so no
|
|
87
|
+
// in-place refetch should occur in this component during the redirect.
|
|
88
|
+
const consoleErrorSpy = jest
|
|
89
|
+
.spyOn(console, 'error')
|
|
90
|
+
.mockImplementation(() => {});
|
|
91
|
+
window.history.pushState({}, '', '/user/submissions');
|
|
92
|
+
|
|
93
|
+
render(<SideNavUI svgIcons="" />);
|
|
94
|
+
|
|
95
|
+
await waitFor(() => expect(global.fetch).toHaveBeenCalled());
|
|
96
|
+
|
|
97
|
+
const dropdown = await screen.findByLabelText('Select User Role');
|
|
98
|
+
global.fetch.mockClear();
|
|
99
|
+
|
|
100
|
+
fireEvent.change(dropdown, { target: { value: 'Reviewer' } });
|
|
101
|
+
|
|
102
|
+
// Give any (incorrect) in-place refetch a chance to fire before asserting
|
|
103
|
+
// it didn't.
|
|
104
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
105
|
+
expect(global.fetch).not.toHaveBeenCalled();
|
|
106
|
+
|
|
107
|
+
consoleErrorSpy.mockRestore();
|
|
108
|
+
});
|
|
22
109
|
});
|