MCPcopy Index your code
hub / github.com/coder/coder / UserGroupsCell

Function UserGroupsCell

site/src/modules/users/UserGroupsCell.tsx:17–81  ·  view source on GitHub ↗
({ userGroups })

Source from the content-addressed store, hash-verified

15};
16
17export const UserGroupsCell: FC<GroupsCellProps> = ({ userGroups }) => {
18 return (
19 <TableCell>
20 {userGroups === undefined ? (
21 <span>No groups</span>
22 ) : (
23 <Popover>
24 <PopoverTrigger asChild>
25 <button
26 type="button"
27 className="cursor-pointer bg-transparent border-0 p-0 text-inherit leading-none"
28 aria-label={
29 userGroups.length === 0
30 ? "No groups"
31 : `View ${userGroups.length} group${userGroups.length !== 1 ? "s" : ""}`
32 }
33 >
34 <div className="flex flex-row gap-2 items-center">
35 <UsersIcon
36 className={cn([
37 "size-4 opacity-50",
38 userGroups.length > 0 && "opacity-80",
39 ])}
40 />
41
42 <span>
43 {userGroups.length} Group{userGroups.length !== 1 && "s"}
44 </span>
45 </div>
46 </button>
47 </PopoverTrigger>
48
49 <PopoverContent
50 align="start"
51 sideOffset={8}
52 className="w-auto min-w-[240px] max-w-sm max-h-[400px] p-0"
53 >
54 <ul className="m-0 list-none flex flex-col flex-nowrap gap-0 px-0.5 py-1 text-sm">
55 {userGroups.map((group) => {
56 const groupName = group.display_name || group.name;
57 return (
58 <li
59 key={group.id}
60 className="flex gap-x-[10px] items-center px-2 py-1.5"
61 >
62 <Avatar
63 size="sm"
64 variant="icon"
65 src={group.avatar_url}
66 fallback={groupName}
67 />
68
69 <span className="m-0 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap leading-none">
70 {groupName || <em>N/A</em>}
71 </span>
72 </li>
73 );
74 })}

Callers

nothing calls this directly

Calls 1

cnFunction · 0.90

Tested by

no test coverage detected