| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { DotsHorizontalIcon } from '@radix-ui/react-icons'
- import { Row } from '@tanstack/react-table'
- import { Trash2 } from 'lucide-react'
- import { Button } from '@/components/ui/button'
- import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuRadioGroup,
- DropdownMenuRadioItem,
- DropdownMenuSeparator,
- DropdownMenuShortcut,
- DropdownMenuSub,
- DropdownMenuSubContent,
- DropdownMenuSubTrigger,
- DropdownMenuTrigger,
- } from '@/components/ui/dropdown-menu'
- import { useTasks } from '../context/tasks-context'
- import { labels } from '../data/data'
- import { taskSchema } from '../data/schema'
- interface DataTableRowActionsProps<TData> {
- row: Row<TData>
- }
- export function DataTableRowActions<TData>({
- row,
- }: DataTableRowActionsProps<TData>) {
- const task = taskSchema.parse(row.original)
- const { setOpen, setCurrentRow } = useTasks()
- return (
- <DropdownMenu modal={false}>
- <DropdownMenuTrigger asChild>
- <Button
- variant='ghost'
- className='data-[state=open]:bg-muted flex h-8 w-8 p-0'
- >
- <DotsHorizontalIcon className='h-4 w-4' />
- <span className='sr-only'>Open menu</span>
- </Button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align='end' className='w-[160px]'>
- <DropdownMenuItem
- onClick={() => {
- setCurrentRow(task)
- setOpen('update')
- }}
- >
- Edit
- </DropdownMenuItem>
- <DropdownMenuItem disabled>Make a copy</DropdownMenuItem>
- <DropdownMenuItem disabled>Favorite</DropdownMenuItem>
- <DropdownMenuSeparator />
- <DropdownMenuSub>
- <DropdownMenuSubTrigger>Labels</DropdownMenuSubTrigger>
- <DropdownMenuSubContent>
- <DropdownMenuRadioGroup value={task.label}>
- {labels.map((label) => (
- <DropdownMenuRadioItem key={label.value} value={label.value}>
- {label.label}
- </DropdownMenuRadioItem>
- ))}
- </DropdownMenuRadioGroup>
- </DropdownMenuSubContent>
- </DropdownMenuSub>
- <DropdownMenuSeparator />
- <DropdownMenuItem
- onClick={() => {
- setCurrentRow(task)
- setOpen('delete')
- }}
- >
- Delete
- <DropdownMenuShortcut>
- <Trash2 size={16} />
- </DropdownMenuShortcut>
- </DropdownMenuItem>
- </DropdownMenuContent>
- </DropdownMenu>
- )
- }
|