gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/libs/entity-table/components/actions-cell.tsx · master
Source
1 b15ff05 Mrdn 2y ago import {
2 b15ff05 Mrdn 2y ago OpenInNewWindowIcon,
3 b15ff05 Mrdn 2y ago } from "@radix-ui/react-icons"
4 b15ff05 Mrdn 2y ago import { Row } from "@tanstack/react-table"
5 b15ff05 Mrdn 2y ago
6 b15ff05 Mrdn 2y ago import {
7 b15ff05 Mrdn 2y ago Button,
8 b15ff05 Mrdn 2y ago DropdownMenu,
9 b15ff05 Mrdn 2y ago DropdownMenuContent,
10 b15ff05 Mrdn 2y ago DropdownMenuItem,
11 b15ff05 Mrdn 2y ago DropdownMenuLabel,
12 b15ff05 Mrdn 2y ago DropdownMenuSeparator,
13 b15ff05 Mrdn 2y ago DropdownMenuTrigger,
14 7389ad0 Mardin 2y ago } from "@marzneshin/common/components"
15 b15ff05 Mrdn 2y ago import { MoreHorizontal, PencilIcon, TrashIcon } from "lucide-react"
16 b15ff05 Mrdn 2y ago import { useTranslation } from "react-i18next"
17 b15ff05 Mrdn 2y ago
18 b15ff05 Mrdn 2y ago interface DataTableActionsCellProps<TData>
19 b15ff05 Mrdn 2y ago extends React.HTMLAttributes<HTMLDivElement> {
20 b15ff05 Mrdn 2y ago row: Row<TData>,
21 b15ff05 Mrdn 2y ago onDelete: (object: TData) => void,
22 b15ff05 Mrdn 2y ago onEdit: (object: TData) => void,
23 b15ff05 Mrdn 2y ago onOpen: (object: TData) => void,
24 b15ff05 Mrdn 2y ago }
25 b15ff05 Mrdn 2y ago
26 b15ff05 Mrdn 2y ago export function DataTableActionsCell<TData>({
27 b15ff05 Mrdn 2y ago row, onDelete, onEdit, onOpen
28 b15ff05 Mrdn 2y ago }: DataTableActionsCellProps<TData>) {
29 b15ff05 Mrdn 2y ago const { t } = useTranslation();
30 b15ff05 Mrdn 2y ago
31 b15ff05 Mrdn 2y ago return (
32 b15ff05 Mrdn 2y ago <DropdownMenu>
33 b15ff05 Mrdn 2y ago <DropdownMenuTrigger asChild>
34 d21d2e2 Mrdn 2y ago <Button variant="ghost" data-testid="action-menu-open" className="p-0 w-8 h-8">
35 b15ff05 Mrdn 2y ago <span className="sr-only">Open menu</span>
36 b15ff05 Mrdn 2y ago <MoreHorizontal className="w-4 h-4" />
37 b15ff05 Mrdn 2y ago </Button>
38 b15ff05 Mrdn 2y ago </DropdownMenuTrigger>
39 b15ff05 Mrdn 2y ago <DropdownMenuContent align="end">
40 b15ff05 Mrdn 2y ago <DropdownMenuLabel>{t('actions')}</DropdownMenuLabel>
41 d21d2e2 Mrdn 2y ago <DropdownMenuItem data-testid="action-row-open" onClick={() => { onOpen(row.original) }}>
42 b15ff05 Mrdn 2y ago <OpenInNewWindowIcon className="mr-1 w-4 h-4" /> {t('open')}
43 b15ff05 Mrdn 2y ago </DropdownMenuItem>
44 b15ff05 Mrdn 2y ago <DropdownMenuSeparator />
45 d21d2e2 Mrdn 2y ago <DropdownMenuItem data-testid="action-row-edit" onClick={(e) => { e.stopPropagation(); onEdit(row.original) }}>
46 b15ff05 Mrdn 2y ago <PencilIcon className="mr-1 w-4 h-4" /> {t('edit')}
47 b15ff05 Mrdn 2y ago </DropdownMenuItem>
48 d21d2e2 Mrdn 2y ago <DropdownMenuItem data-testid="action-row-delete" onClick={(e) => { e.stopPropagation(); onDelete(row.original) }} className="text-destructive">
49 b15ff05 Mrdn 2y ago <TrashIcon className="mr-1 w-4 h-4" />{t('delete')}
50 b15ff05 Mrdn 2y ago </DropdownMenuItem>
51 b15ff05 Mrdn 2y ago </DropdownMenuContent>
52 b15ff05 Mrdn 2y ago </DropdownMenu>
53 b15ff05 Mrdn 2y ago )
54 b15ff05 Mrdn 2y ago }