Skip to content

Commit

Permalink
fix: role permissions UI improvements (#5388)
Browse files Browse the repository at this point in the history
https://linear.app/unleash/issue/2-1657/role-permissions-improvements

This PR includes 3 improvements:
 - Sort permissions alphabetically
 - Ensure we don't display duplicate permissions
 - Improve alignment of columns by using a proper grid


![image](https://github.com/Unleash/unleash/assets/14320932/7cb4a70e-8e39-4077-95a0-66f29b3c2e55)
  • Loading branch information
nunogois committed Nov 23, 2023
1 parent ce01687 commit 7d2fd17
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 11 deletions.
Expand Up @@ -139,15 +139,15 @@ export const PermissionAccordion: VFC<IEnvironmentPermissionAccordionProps> = ({
{isAllChecked ? 'Unselect ' : 'Select '}
all {context} permissions
</Button>
<Box>
<Box
display='grid'
gridTemplateColumns={{
sm: '1fr 1fr',
xs: '1fr',
}}
>
{permissions?.map((permission: IPermission) => (
<FormControlLabel
sx={{
minWidth: {
sm: '300px',
xs: 'auto',
},
}}
data-testid={getRoleKey(permission)}
key={getRoleKey(permission)}
control={
Expand Down
31 changes: 27 additions & 4 deletions frontend/src/utils/permissions.ts
Expand Up @@ -75,8 +75,8 @@ export const toggleAllPermissions = (
export const getCategorizedRootPermissions = (permissions: IPermission[]) => {
const rootPermissions = permissions.filter(({ name }) => name !== 'ADMIN');

return rootPermissions
.reduce((categories: IPermissionCategory[], permission) => {
const categories = rootPermissions.reduce(
(categories: IPermissionCategory[], permission) => {
const categoryLabel =
ROOT_PERMISSION_CATEGORIES.find((category) =>
category.permissions.includes(permission.name),
Expand All @@ -97,7 +97,21 @@ export const getCategorizedRootPermissions = (permissions: IPermission[]) => {
}

return categories;
}, [])
},
[],
);

return categories
.map((category) => ({
...category,
permissions: [
...new Set(
category.permissions.sort((a, b) =>
a.displayName.localeCompare(b.displayName),
),
),
],
}))
.sort(sortCategories);
};

Expand Down Expand Up @@ -146,7 +160,16 @@ export const getCategorizedProjectPermissions = (
),
);

return categories;
return categories.map((category) => ({
...category,
permissions: [
...new Set(
category.permissions.sort((a, b) =>
a.displayName.localeCompare(b.displayName),
),
),
],
}));
};

export const flattenProjectPermissions = (
Expand Down

0 comments on commit 7d2fd17

Please sign in to comment.