feat: add confirmation popover for user deletion in TableList component

This commit is contained in:
2026-02-07 02:47:29 +08:00
parent e06b269374
commit 739e1d8177

View File

@@ -1,5 +1,5 @@
'use client';
import { useEffect } from 'react';
import React, { useEffect } from 'react';
import { useForm } from 'react-hook-form';
import { useUserStore } from './store/user';
import { useAdminStore } from './store/admin';
@@ -19,12 +19,25 @@ import {
DialogHeader,
DialogTitle,
} from '@/components/ui/dialog';
import {
Popover,
PopoverContent,
PopoverTrigger,
} from '@/components/ui/popover';
import { Plus, Pencil, Trash2 } from 'lucide-react';
import { LayoutMain } from '@/modules/layout';
const TableList = () => {
const { list, setShowEdit, setFormData, } = useUserStore();
const { deleteUser } = useAdminStore()
const { list, setShowEdit, setFormData, getList } = useUserStore();
const { deleteUser } = useAdminStore();
const [openPopover, setOpenPopover] = React.useState<string | null>(null);
const handleDelete = async (id: string) => {
await deleteUser(id);
setOpenPopover(null);
getList();
};
return (
<div className="rounded-md border">
<Table>
@@ -53,13 +66,42 @@ const TableList = () => {
<Pencil className="w-4 h-4 mr-1" />
</Button>
<Popover
open={openPopover === user.id}
onOpenChange={(open) => setOpenPopover(open ? user.id : null)}
>
<PopoverTrigger asChild>
<Button
variant="destructive"
size="sm"
onClick={() => deleteUser(user.id)}>
>
<Trash2 className="w-4 h-4 mr-1" />
</Button>
</PopoverTrigger>
<PopoverContent className="w-auto p-4" align="start">
<div className="space-y-3">
<p className="text-sm font-medium"> "{user.username}"?</p>
<p className="text-xs text-muted-foreground"></p>
<div className="flex gap-2 justify-end">
<Button
variant="outline"
size="sm"
onClick={() => setOpenPopover(null)}
>
</Button>
<Button
variant="destructive"
size="sm"
onClick={() => handleDelete(user.id)}
>
</Button>
</div>
</div>
</PopoverContent>
</Popover>
</TableCell>
</TableRow>
))}