data-table-row-actions.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { DotsHorizontalIcon } from '@radix-ui/react-icons'
  2. import { type Row } from '@tanstack/react-table'
  3. import { Trash2, Eye, EyeOff } from 'lucide-react'
  4. import { Button } from '@/components/ui/button'
  5. import {
  6. DropdownMenu,
  7. DropdownMenuContent,
  8. DropdownMenuItem,
  9. DropdownMenuSeparator,
  10. DropdownMenuShortcut,
  11. DropdownMenuTrigger,
  12. } from '@/components/ui/dropdown-menu'
  13. import { useReferralCodes } from './referral-codes-provider'
  14. import { type Referralcode } from '@/types/referral-codes.types'
  15. interface Props {
  16. row: Row<Referralcode>
  17. }
  18. export function DataTableRowActions({ row }: Props) {
  19. const { setOpen, setCurrentRow } = useReferralCodes()
  20. const referralCode = row.original
  21. const handleChangeState = () => {
  22. setCurrentRow(referralCode)
  23. setOpen('update')
  24. }
  25. const handleView = () => {
  26. setCurrentRow(referralCode)
  27. setOpen('view')
  28. }
  29. const handleDelete = () => {
  30. setCurrentRow(referralCode)
  31. setOpen('delete')
  32. }
  33. return (
  34. <DropdownMenu>
  35. <DropdownMenuTrigger asChild>
  36. <Button variant='ghost' className='flex h-8 w-8 p-0'>
  37. <DotsHorizontalIcon className='h-4 w-4' />
  38. </Button>
  39. </DropdownMenuTrigger>
  40. <DropdownMenuContent align='end'>
  41. <DropdownMenuItem onClick={handleView}>
  42. مشاهده
  43. <DropdownMenuShortcut>
  44. <Eye size={16} />
  45. </DropdownMenuShortcut>
  46. </DropdownMenuItem>
  47. <DropdownMenuItem onClick={handleChangeState}>
  48. تغییر وضعیت
  49. <DropdownMenuShortcut>
  50. <EyeOff size={16} />
  51. </DropdownMenuShortcut>
  52. </DropdownMenuItem>
  53. <DropdownMenuSeparator />
  54. <DropdownMenuItem onClick={handleDelete} className='text-red-600'>
  55. حذف
  56. <DropdownMenuShortcut>
  57. <Trash2 size={16} color='red' />
  58. </DropdownMenuShortcut>
  59. </DropdownMenuItem>
  60. </DropdownMenuContent>
  61. </DropdownMenu>
  62. )
  63. }