Skip to content

Commit 658d2ab

Browse files
authored
Admin actions on mobile are now collapsed in a dropdown menu (#200)
Makes admin actions on a user's profile responsive by making the action buttons collapse into a dropdown menu on mobile
1 parent fa88718 commit 658d2ab

File tree

1 file changed

+46
-1
lines changed
  • apps/web/src/app/admin/users/[slug]

1 file changed

+46
-1
lines changed

apps/web/src/app/admin/users/[slug]/page.tsx

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ import {
99
PersonalInfo,
1010
ProfileInfo,
1111
} from "@/components/admin/users/ServerSections";
12+
import {
13+
DropdownMenu,
14+
DropdownMenuTrigger,
15+
DropdownMenuContent,
16+
DropdownMenuItem,
17+
DropdownMenuSeparator
18+
} from "@/components/shadcn/ui/dropdown-menu";
1219
import { auth } from "@clerk/nextjs/server";
1320
import { notFound } from "next/navigation";
1421
import { isUserAdmin } from "@/lib/utils/server/admin";
@@ -42,7 +49,7 @@ export default async function Page({ params }: { params: { slug: string } }) {
4249
{/* <p className="text-sm text-muted-foreground">{users.length} Total Users</p> */}
4350
</div>
4451
</div>
45-
<div className="col-span-2 flex items-center justify-end gap-2">
52+
<div className="col-span-2 hidden md:flex items-center justify-end gap-2 ">
4653
<Link href={`/@${user.hackerTag}`} target="_blank">
4754
<Button variant={"outline"}>Hacker Profile</Button>
4855
</Link>
@@ -64,6 +71,44 @@ export default async function Page({ params }: { params: { slug: string } }) {
6471
/>
6572
)}
6673
</div>
74+
<div className="col-span-2 flex md:hidden items-center justify-end pr-4">
75+
<DropdownMenu>
76+
<DropdownMenuTrigger asChild>
77+
<Button variant={"outline"} >
78+
Admin Actions
79+
</Button>
80+
</DropdownMenuTrigger>
81+
<DropdownMenuContent align="end" className="min-w-[160px]">
82+
<DropdownMenuItem className="justify-center">
83+
<Link href={`/@${user.hackerTag}`} target="_blank">
84+
<Button variant={"outline"}>Hacker Profile</Button>
85+
</Link>
86+
</DropdownMenuItem>
87+
<DropdownMenuSeparator />
88+
<DropdownMenuItem className="justify-center">
89+
<Link href={`mailto:${user.email}`}>
90+
<Button variant={"outline"}>Email Hacker</Button>
91+
</Link>
92+
</DropdownMenuItem>
93+
<DropdownMenuSeparator />
94+
<div className="px-2 py-1.5 text-sm text-center hover:bg-accent rounded-sm cursor-pointer">
95+
<UpdateRoleDialog
96+
name={`${user.firstName} ${user.lastName}`}
97+
canMakeAdmins={admin.role === "super_admin"}
98+
currPermision={user.role}
99+
userID={user.clerkID}
100+
/>
101+
</div>
102+
103+
{(c.featureFlags.core.requireUsersApproval as boolean) && (
104+
<ApproveUserButton
105+
userIDToUpdate={user.clerkID}
106+
currentApproval={user.isApproved}
107+
/>
108+
)}
109+
</DropdownMenuContent>
110+
</DropdownMenu>
111+
</div>
67112
</div>
68113
<div className="mt-20 grid min-h-[500px] w-full grid-cols-3">
69114
<div className="flex h-full w-full max-w-[250px] flex-col items-center">

0 commit comments

Comments
 (0)