| 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 |
b15ff05 |
Mrdn |
2y ago |
} from "@marzneshin/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 |
b15ff05 |
Mrdn |
2y ago |
<Button variant="ghost" 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 |
3b7feef |
Mrdn |
2y ago |
<DropdownMenuItem 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 |
3b7feef |
Mrdn |
2y ago |
<DropdownMenuItem 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 |
3b7feef |
Mrdn |
2y ago |
<DropdownMenuItem 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 |
} |