Skip to content

Commit bdaa80c

Browse files
feat: [UIE-10006] - IAM Delegation: reset to prev page when changing role (#13285)
* feat: [UIE-10006] - IAM Delegation: reset to prev page when changing role * Added changeset: IAM: changing entity/role can cause an empty page
1 parent 7ffb24a commit bdaa80c

File tree

3 files changed

+31
-9
lines changed

3 files changed

+31
-9
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/manager": Fixed
3+
---
4+
5+
IAM: changing entity/role can cause an empty page ([#13285](https://github.com/linode/manager/pull/13285))

packages/manager/src/features/IAM/Shared/AssignedEntitiesTable/AssignedEntitiesTable.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,17 @@ export const AssignedEntitiesTable = ({ username }: Props) => {
170170
setSelectedRole(role);
171171
};
172172

173-
const handleRemoveAssignmentDialogClose = () => {
174-
setIsRemoveAssignmentDialogOpen(false);
173+
/**
174+
* Closes the appropriate assignment-related dialog and adjusts pagination if needed.
175+
*
176+
* @param drawerMode Optional mode indicating which dialog should be closed.
177+
*/
178+
const handleDialogClose = (drawerMode?: DrawerModes) => {
179+
if (drawerMode && drawerMode === 'change-role-for-entity') {
180+
setIsChangeRoleForEntityDrawerOpen(false);
181+
} else {
182+
setIsRemoveAssignmentDialogOpen(false);
183+
}
175184
// If we just deleted the last one on a page, reset to the previous page.
176185
const removedLastOnPage =
177186
filteredAndSortedRoles.length % pagination.pageSize === 1;
@@ -364,13 +373,13 @@ export const AssignedEntitiesTable = ({ username }: Props) => {
364373
</Table>
365374
<ChangeRoleForEntityDrawer
366375
mode={drawerMode}
367-
onClose={() => setIsChangeRoleForEntityDrawerOpen(false)}
376+
onClose={() => handleDialogClose(drawerMode)}
368377
open={isChangeRoleForEntityDrawerOpen}
369378
role={selectedRole}
370379
username={username}
371380
/>
372381
<RemoveAssignmentConfirmationDialog
373-
onClose={() => handleRemoveAssignmentDialogClose()}
382+
onClose={() => handleDialogClose()}
374383
open={isRemoveAssignmentDialogOpen}
375384
role={selectedRole}
376385
username={username}

packages/manager/src/features/IAM/Shared/AssignedRolesTable/AssignedRolesTable.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,17 @@ export const AssignedRolesTable = () => {
166166
setSelectedRole(role);
167167
};
168168

169-
const handleRemoveRoleDialogClose = () => {
170-
setIsUnassignRoleDialogOpen(false);
171-
169+
/**
170+
* Closes the appropriate assignment-related dialog and adjusts pagination if needed.
171+
*
172+
* @param drawerMode Optional mode indicating which dialog should be closed.
173+
*/
174+
const handleDialogClose = (drawerMode?: DrawerModes) => {
175+
if (drawerMode && drawerMode === 'change-role') {
176+
setIsChangeRoleDrawerOpen(false);
177+
} else {
178+
setIsUnassignRoleDialogOpen(false);
179+
}
172180
// If we just deleted the last one on a page, reset to the previous page.
173181
const removedLastOnPage =
174182
filteredAndSortedRoles.length % pagination.pageSize === 1;
@@ -453,12 +461,12 @@ export const AssignedRolesTable = () => {
453461
/>
454462
<ChangeRoleDrawer
455463
mode={drawerMode}
456-
onClose={() => setIsChangeRoleDrawerOpen(false)}
464+
onClose={() => handleDialogClose(drawerMode)}
457465
open={isChangeRoleDrawerOpen}
458466
role={selectedRole}
459467
/>
460468
<UnassignRoleConfirmationDialog
461-
onClose={() => handleRemoveRoleDialogClose()}
469+
onClose={() => handleDialogClose()}
462470
open={isUnassignRoleDialogOpen}
463471
role={selectedRole}
464472
/>

0 commit comments

Comments
 (0)