qpp-style 9.28.3-mo-beta.0 → 9.28.4-mo-beta.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/Accordion/index.jsx +5 -1
- package/components/SideNav/Content/SelectRole/index.js +10 -18
- package/components/SideNav/Content/SelectRole/utils.js +41 -13
- package/components/SideNav/Links/NavLinkDrawer.jsx +20 -3
- package/components/SideNav/helpers.js +10 -2
- 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/images/icons/svg/checkmark.svg +2 -2
- package/images/icons/svg/chevron-down.svg +6 -6
- package/images/icons/svg/chevron-left.svg +5 -5
- package/images/icons/svg/chevron-right.svg +5 -5
- package/images/icons/svg/chevron-up.svg +5 -5
- package/images/icons/svg/clipboard.svg +1 -1
- package/images/icons/svg/divide.svg +3 -3
- package/images/icons/svg/doctors-and-clinicians-preview.svg +3 -3
- package/images/icons/svg/equals.svg +3 -3
- package/images/icons/svg/exclamation.svg +4 -5
- package/images/icons/svg/info.svg +7 -10
- package/images/icons/svg/manage-user-access.svg +3 -3
- package/images/icons/svg/multiply.svg +3 -3
- package/images/icons/svg/performance-feedback.svg +1 -1
- package/images/icons/svg/plus.svg +3 -3
- package/images/icons/svg/preview.svg +6 -8
- package/images/icons/svg/reporting.svg +6 -8
- package/images/icons/svg/save-disk.svg +2 -2
- package/images/icons/svg/subtract.svg +2 -2
- package/images/icons/svg/targeted-review.svg +6 -6
- package/package.json +2 -1
- package/styles/components/_accordion.scss +7 -0
|
@@ -38,7 +38,9 @@ const Accordion = (props) => {
|
|
|
38
38
|
return (
|
|
39
39
|
<div className="accordion-section" data-testid="accordion">
|
|
40
40
|
<button
|
|
41
|
-
className={`accordion ${setActive}
|
|
41
|
+
className={`accordion ${setActive} ${
|
|
42
|
+
setActive && props.isSticky ? 'sticky' : ''
|
|
43
|
+
}`}
|
|
42
44
|
aria-label={props.title}
|
|
43
45
|
aria-pressed={ariaPressed}
|
|
44
46
|
aria-expanded={ariaPressed}
|
|
@@ -83,11 +85,13 @@ Accordion.propTypes = {
|
|
|
83
85
|
centerItem: PropTypes.string,
|
|
84
86
|
rightItem: PropTypes.string,
|
|
85
87
|
isOpen: PropTypes.bool,
|
|
88
|
+
isSticky: PropTypes.bool,
|
|
86
89
|
};
|
|
87
90
|
|
|
88
91
|
Accordion.defaultProps = {
|
|
89
92
|
title: '',
|
|
90
93
|
isOpen: false,
|
|
94
|
+
isSticky: false,
|
|
91
95
|
};
|
|
92
96
|
|
|
93
97
|
export default Accordion;
|
|
@@ -54,26 +54,18 @@ const SelectRole = ({ selectedRole, setSelectedRole }) => {
|
|
|
54
54
|
}
|
|
55
55
|
}, []);
|
|
56
56
|
|
|
57
|
-
const singleRoleUser = ROLE_OPTIONS.length === 1;
|
|
58
|
-
|
|
59
|
-
const MultiRoleDropdown = () => (
|
|
60
|
-
<Dropdown
|
|
61
|
-
value={selectedRole}
|
|
62
|
-
name="user-role-selection"
|
|
63
|
-
ariaLabel="Select User Role"
|
|
64
|
-
className="qpp-u-width--100 SelectRole__Dropdown"
|
|
65
|
-
options={ROLE_OPTIONS}
|
|
66
|
-
onChange={handleSelection}
|
|
67
|
-
disabled={isHelpdeskRoleAndImpersonating}
|
|
68
|
-
/>
|
|
69
|
-
);
|
|
70
|
-
|
|
71
57
|
return (
|
|
72
58
|
<div className="SelectRole__Container">
|
|
73
|
-
<p className="SelectRole__Text">
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
<p className="SelectRole__Text">You are viewing as a</p>
|
|
60
|
+
<Dropdown
|
|
61
|
+
value={selectedRole}
|
|
62
|
+
name="user-role-selection"
|
|
63
|
+
ariaLabel="Select User Role"
|
|
64
|
+
className="qpp-u-width--100 SelectRole__Dropdown"
|
|
65
|
+
options={ROLE_OPTIONS}
|
|
66
|
+
onChange={handleSelection}
|
|
67
|
+
disabled={isHelpdeskRoleAndImpersonating}
|
|
68
|
+
/>
|
|
77
69
|
</div>
|
|
78
70
|
);
|
|
79
71
|
};
|
|
@@ -11,19 +11,27 @@ const extractCookieValues = (cookies) => {
|
|
|
11
11
|
return [hasAuthorizations, cmsInternalRoles];
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
+
const reviewerRoles = [
|
|
15
|
+
'QPP Self-Nomination',
|
|
16
|
+
'QPP Targeted Review & Exceptions',
|
|
17
|
+
'QPP Case Management - PIMMS Reviewer',
|
|
18
|
+
'QPP Case Management - ACO PAC Reviewer',
|
|
19
|
+
'QPP Case Management - CMS Reviewer',
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
const cmsRoles = [
|
|
23
|
+
'QPP Content Management - Author',
|
|
24
|
+
'QPP Content Management - Approver',
|
|
25
|
+
'QPP Content Management - Admin',
|
|
26
|
+
'QPP Front-end - Author',
|
|
27
|
+
];
|
|
28
|
+
|
|
14
29
|
/**
|
|
15
30
|
* Check if internal cms role is a Reviewer role
|
|
16
31
|
* @param {string} cmsInternalRole
|
|
17
32
|
* @returns {boolean}
|
|
18
33
|
*/
|
|
19
34
|
export const isReviewerRole = (cmsInternalRole) => {
|
|
20
|
-
const reviewerRoles = [
|
|
21
|
-
'QPP Self-Nomination',
|
|
22
|
-
'QPP Targeted Review & Exceptions',
|
|
23
|
-
'QPP Case Management - PIMMS Reviewer',
|
|
24
|
-
'QPP Case Management - ACO PAC Reviewer',
|
|
25
|
-
'QPP Case Management - CMS Reviewer',
|
|
26
|
-
];
|
|
27
35
|
return reviewerRoles.includes(cmsInternalRole);
|
|
28
36
|
};
|
|
29
37
|
|
|
@@ -49,15 +57,35 @@ const hasHelpdeskRole = (cmsInternalRoles) => {
|
|
|
49
57
|
|
|
50
58
|
const hasContentMgmtRole = (cmsInternalRoles) => {
|
|
51
59
|
if (!cmsInternalRoles) return false;
|
|
52
|
-
const cmsRoles = [
|
|
53
|
-
'QPP Content Management - Author',
|
|
54
|
-
'QPP Content Management - Approver',
|
|
55
|
-
'QPP Content Management - Admin',
|
|
56
|
-
'QPP Front-end - Author',
|
|
57
|
-
];
|
|
58
60
|
return cmsInternalRoles.some((role) => cmsRoles.includes(role));
|
|
59
61
|
};
|
|
60
62
|
|
|
63
|
+
const includesRole = (arr, roles) => roles.some((role) => arr.includes(role));
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Check if internal cms roles includes only Content Manager roles
|
|
67
|
+
* @param {array} internalAuthz array of values
|
|
68
|
+
* @returns {boolean}
|
|
69
|
+
*/
|
|
70
|
+
export const isOnlyContentManager = (internalAuthz) => {
|
|
71
|
+
return (
|
|
72
|
+
includesRole(internalAuthz, cmsRoles) &&
|
|
73
|
+
!includesRole(internalAuthz, reviewerRoles)
|
|
74
|
+
);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Check if internal cms roles includes only Internal Reviewers roles
|
|
79
|
+
* @param {array} internalAuthz array of values
|
|
80
|
+
* @returns {boolean}
|
|
81
|
+
*/
|
|
82
|
+
export const isOnlyInternalReviewer = (internalAuthz) => {
|
|
83
|
+
return (
|
|
84
|
+
includesRole(internalAuthz, reviewerRoles) &&
|
|
85
|
+
!includesRole(internalAuthz, cmsRoles)
|
|
86
|
+
);
|
|
87
|
+
};
|
|
88
|
+
|
|
61
89
|
/**
|
|
62
90
|
* Transforms cookie values into optios format for use in role seelction dropdown
|
|
63
91
|
* @param {array} values extracted & parsed vookie values
|
|
@@ -28,6 +28,9 @@ const NavLinkDrawer = ({
|
|
|
28
28
|
}) => {
|
|
29
29
|
const [isOpen, setIsOpen] = useState(openByDefault);
|
|
30
30
|
const MANAGE_ACCESS = '/user/manage-access';
|
|
31
|
+
const ELIGIBILITY_REPORTING = '/user/dashboard';
|
|
32
|
+
const REGISTRATION = '/user/registration';
|
|
33
|
+
const SUBMISSION_FEEDBACK = '/user/submissions/feedback';
|
|
31
34
|
|
|
32
35
|
const toggleDrawer = () => {
|
|
33
36
|
if (!isExpanded && typeof sidebarExpand === 'function') {
|
|
@@ -44,11 +47,25 @@ const NavLinkDrawer = ({
|
|
|
44
47
|
};
|
|
45
48
|
|
|
46
49
|
const reRouteHandler = () => {
|
|
47
|
-
if (url
|
|
48
|
-
|
|
50
|
+
if (url) {
|
|
51
|
+
window.location.href = url;
|
|
49
52
|
}
|
|
50
53
|
};
|
|
51
54
|
|
|
55
|
+
const parentRerouteUrls = [
|
|
56
|
+
MANAGE_ACCESS,
|
|
57
|
+
ELIGIBILITY_REPORTING,
|
|
58
|
+
REGISTRATION,
|
|
59
|
+
SUBMISSION_FEEDBACK,
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const parentReroute = (url) => {
|
|
63
|
+
if (parentRerouteUrls.includes(url)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
};
|
|
68
|
+
|
|
52
69
|
const isLinkActive = (link, func) => {
|
|
53
70
|
if (typeof func === 'function') {
|
|
54
71
|
return func(link);
|
|
@@ -201,7 +218,7 @@ const NavLinkDrawer = ({
|
|
|
201
218
|
{...(!isAlwaysOpen ? { 'aria-pressed': isOpen } : {})}
|
|
202
219
|
tabIndex="0"
|
|
203
220
|
aria-label={label}
|
|
204
|
-
{...((url
|
|
221
|
+
{...((parentReroute(url) && isAlwaysOpen) || disabled
|
|
205
222
|
? { disabled: isAlwaysOpen || disabled }
|
|
206
223
|
: {})}
|
|
207
224
|
className={`${className} ${expandedClass} ${highlightTitle(
|
|
@@ -17,7 +17,11 @@ import {
|
|
|
17
17
|
AuthorContentIcon,
|
|
18
18
|
RegistrationIcon,
|
|
19
19
|
} from '../../lib/SvgComponents';
|
|
20
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
isReviewerRole,
|
|
22
|
+
isOnlyInternalReviewer,
|
|
23
|
+
isOnlyContentManager,
|
|
24
|
+
} from './Content/SelectRole/utils';
|
|
21
25
|
|
|
22
26
|
const submissionsUrl = '/user/submissions';
|
|
23
27
|
const dashboardUrl = '/user/dashboard';
|
|
@@ -193,7 +197,11 @@ const isMultiRoleUser = (docCookie) => {
|
|
|
193
197
|
return activeRoles.add(element);
|
|
194
198
|
});
|
|
195
199
|
|
|
196
|
-
return
|
|
200
|
+
return (
|
|
201
|
+
!isOnlyContentManager(internalAuthz) &&
|
|
202
|
+
!isOnlyInternalReviewer(internalAuthz) &&
|
|
203
|
+
activeRoles.size > 1
|
|
204
|
+
);
|
|
197
205
|
};
|
|
198
206
|
|
|
199
207
|
/**
|