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} />
+
+
+
+ );
+ })}
+
+
+ );
+ });
+ })()}
);
})}