diff --git a/frontend/src/components/admin/PermissionMatrixTab.tsx b/frontend/src/components/admin/PermissionMatrixTab.tsx index b189711..9018c48 100644 --- a/frontend/src/components/admin/PermissionMatrixTab.tsx +++ b/frontend/src/components/admin/PermissionMatrixTab.tsx @@ -460,67 +460,57 @@ function PermissionMatrixTab() { })} - - - - - - {(() => { - let lastSubGroup: string | null | undefined = undefined; - return fgPerms.map((perm: Permission) => { - const depTooltip = getDepTooltip(perm.id); - const tooltipText = [perm.description, depTooltip].filter(Boolean).join('\n'); - const subGroup = getSubGroupLabel(fg.id, perm.id); - const showSubGroupHeader = subGroup !== lastSubGroup && subGroup !== null; - lastSubGroup = subGroup; - return ( - - {showSubGroupHeader && ( - - - - {subGroup} - - - - )} - - - {perm.label} - - - - - {nonAdminGroups.map(g => { - const isGranted = (grants[g] || []).includes(perm.id); - const curReverseDeps = reverseDeps[perm.id] || []; - const isRequiredByOther = isGranted && curReverseDeps.some(d => (grants[g] || []).includes(d)); - return ( - - - - handlePermissionToggle(g, perm.id, grants, groups)} - disabled={permissionMutation.isPending} size="small" - sx={isRequiredByOther ? { color: 'warning.main', '&.Mui-checked': { color: 'warning.main' } } : undefined} /> - - - - ); - })} - - - ); - }); - })()} - -
-
-
-
+ {isExpanded && (() => { + let lastSubGroup: string | null | undefined = undefined; + return fgPerms.map((perm: Permission) => { + const depTooltip = getDepTooltip(perm.id); + const tooltipText = [perm.description, depTooltip].filter(Boolean).join('\n'); + const subGroup = getSubGroupLabel(fg.id, perm.id); + const showSubGroupHeader = subGroup !== lastSubGroup && subGroup !== null; + lastSubGroup = subGroup; + return ( + + {showSubGroupHeader && ( + + + + {subGroup} + + + + )} + + + {perm.label} + + + + + {nonAdminGroups.map(g => { + const isGranted = (grants[g] || []).includes(perm.id); + const curReverseDeps = reverseDeps[perm.id] || []; + const isRequiredByOther = isGranted && curReverseDeps.some(d => (grants[g] || []).includes(d)); + return ( + + + + handlePermissionToggle(g, perm.id, grants, groups)} + disabled={permissionMutation.isPending} size="small" + sx={isRequiredByOther ? { color: 'warning.main', '&.Mui-checked': { color: 'warning.main' } } : undefined} /> + + + + ); + })} + + + ); + }); + })()} ); })}