Skip to content

Commit 1f62c78

Browse files
authored
Show expiration date on chip hover (#274)
1 parent 86713db commit 1f62c78

File tree

3 files changed

+43
-34
lines changed

3 files changed

+43
-34
lines changed

src/components/MembershipChip.tsx

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,57 +3,66 @@ import {useNavigate} from 'react-router-dom';
33
import {useCurrentUser} from '../authentication';
44
import {canManageGroup, isGroupOwner} from '../authorization';
55
import Chip from '@mui/material/Chip';
6+
import Tooltip from '@mui/material/Tooltip';
67

78
export interface MembershipChipProps {
8-
user: OktaUserGroupMember;
9+
okta_user_group_member: OktaUserGroupMember;
910
group: PolymorphicGroup;
1011
removeRoleGroup: (roleGroup: RoleGroup) => void;
1112
removeDirectAccessAsUser: () => void;
1213
removeDirectAccessAsGroupManager: () => void;
1314
}
1415

1516
export default function MembershipChip({
16-
user,
17+
okta_user_group_member,
1718
group,
1819
removeRoleGroup,
1920
removeDirectAccessAsUser,
2021
removeDirectAccessAsGroupManager,
2122
}: MembershipChipProps) {
2223
const navigate = useNavigate();
2324
const currentUser = useCurrentUser();
24-
const activeRoleGroup = user.active_role_group_mapping?.active_role_group;
25+
const activeRoleGroup = okta_user_group_member.active_role_group_mapping?.active_role_group;
26+
const ending_date = okta_user_group_member.ended_at ?? 'Never';
2527
const canManageUserRoleGroup = activeRoleGroup?.id ? isGroupOwner(currentUser, activeRoleGroup.id) : false;
2628
const canManageThisGroup = group.is_managed && canManageGroup(currentUser, group);
27-
const canManageThisUser = group.is_managed && currentUser.id === user.active_user?.id;
29+
const canManageThisUser = group.is_managed && currentUser.id === okta_user_group_member.active_user?.id;
30+
31+
const moveTooltip = {modifiers: [{name: 'offset', options: {offset: [0, -10]}}]};
32+
2833
return activeRoleGroup ? (
29-
<Chip
30-
label={activeRoleGroup.name}
31-
variant="outlined"
32-
color="primary"
33-
onClick={() => navigate(`/roles/${activeRoleGroup.name}`)}
34-
onDelete={
35-
canManageThisGroup || canManageUserRoleGroup
36-
? () => {
37-
removeRoleGroup(activeRoleGroup);
38-
}
39-
: undefined
40-
}
41-
/>
42-
) : (
43-
<Chip
44-
label="Direct"
45-
color="primary"
46-
onDelete={
47-
canManageThisUser
48-
? () => {
49-
removeDirectAccessAsUser();
50-
}
51-
: canManageThisGroup
34+
<Tooltip title={ending_date} placement="right" PopperProps={moveTooltip}>
35+
<Chip
36+
label={activeRoleGroup.name}
37+
variant="outlined"
38+
color="primary"
39+
onClick={() => navigate(`/roles/${activeRoleGroup.name}`)}
40+
onDelete={
41+
canManageThisGroup || canManageUserRoleGroup
5242
? () => {
53-
removeDirectAccessAsGroupManager();
43+
removeRoleGroup(activeRoleGroup);
5444
}
5545
: undefined
56-
}
57-
/>
46+
}
47+
/>
48+
</Tooltip>
49+
) : (
50+
<Tooltip title={ending_date} placement="right" PopperProps={moveTooltip}>
51+
<Chip
52+
label="Direct"
53+
color="primary"
54+
onDelete={
55+
canManageThisUser
56+
? () => {
57+
removeDirectAccessAsUser();
58+
}
59+
: canManageThisGroup
60+
? () => {
61+
removeDirectAccessAsGroupManager();
62+
}
63+
: undefined
64+
}
65+
/>
66+
</Tooltip>
5867
);
5968
}

src/pages/groups/Read.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ export default function ReadGroup() {
586586
directRoleOwnerships.has(user.active_user!.id) ? (
587587
<MembershipChip
588588
key={`${user.active_user?.id}${user.active_role_group_mapping?.active_role_group?.id}`}
589-
user={user}
589+
okta_user_group_member={user}
590590
group={group}
591591
removeRoleGroup={(roleGroup) => {
592592
removeGroupFromRole(group, roleGroup, true);
@@ -741,7 +741,7 @@ export default function ReadGroup() {
741741
{users.sort(sortOktaUserGroupMembers).map((user) => (
742742
<MembershipChip
743743
key={`${user.active_user?.id}${user.active_role_group_mapping?.active_role_group?.id}`}
744-
user={user}
744+
okta_user_group_member={user}
745745
group={group}
746746
removeRoleGroup={(roleGroup) => {
747747
removeGroupFromRole(group, roleGroup, false);

src/pages/users/Read.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ function OwnerTable({user, ownerships, onClickRemoveGroupFromRole, onClickRemove
198198
group.active_group ? (
199199
<MembershipChip
200200
key={group.active_role_group_mapping?.active_role_group?.name ?? ''}
201-
user={group}
201+
okta_user_group_member={group}
202202
group={group.active_group}
203203
removeRoleGroup={(roleGroup) => {
204204
onClickRemoveGroupFromRole(group.active_group!, roleGroup, true);
@@ -321,7 +321,7 @@ function MemberTable({user, memberships, onClickRemoveGroupFromRole, onClickRemo
321321
group.active_group ? (
322322
<MembershipChip
323323
key={group.active_role_group_mapping?.active_role_group?.name ?? ''}
324-
user={group}
324+
okta_user_group_member={group}
325325
group={group.active_group}
326326
removeRoleGroup={(roleGroup) => {
327327
onClickRemoveGroupFromRole(group.active_group!, roleGroup, false);

0 commit comments

Comments
 (0)