You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.8 KiB
TypeScript
84 lines
1.8 KiB
TypeScript
'use client'
|
|
|
|
import {
|
|
Table,
|
|
TableHeader,
|
|
TableColumn,
|
|
TableBody,
|
|
TableRow,
|
|
TableCell,
|
|
Tooltip,
|
|
} from '@nextui-org/react'
|
|
import { DeleteIcon, EditIcon } from '@/components/icons'
|
|
import { BookmarkCategory } from '@/types'
|
|
|
|
import { useRouter } from 'next/navigation'
|
|
|
|
const columns = [
|
|
{ name: 'NAME', uid: 'name' },
|
|
{ name: 'ACTIONS', uid: 'actions' },
|
|
]
|
|
|
|
export default function TableComponent({
|
|
bookmarkCategories,
|
|
}: {
|
|
bookmarkCategories: BookmarkCategory[]
|
|
}) {
|
|
const router = useRouter()
|
|
|
|
const deleteCategory = async (id: number) => {
|
|
if (!confirm('Do you want to delete this category?')) return
|
|
const body = {
|
|
bookmarkCategoryId: id,
|
|
}
|
|
await fetch('/api/bookmark_category', {
|
|
method: 'DELETE',
|
|
body: JSON.stringify(body),
|
|
})
|
|
|
|
router.refresh()
|
|
return
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<Table>
|
|
<TableHeader columns={columns}>
|
|
{(column) => (
|
|
<TableColumn key={column.uid}>
|
|
{column.name}
|
|
</TableColumn>
|
|
)}
|
|
</TableHeader>
|
|
<TableBody items={bookmarkCategories}>
|
|
{(item) => (
|
|
<TableRow key={item.id}>
|
|
<TableCell>{item.name}</TableCell>
|
|
<TableCell>
|
|
<div className='relative flex items-center gap-2'>
|
|
<Tooltip content='Edit Category'>
|
|
<span className='cursor-pointer text-lg text-default-400 active:opacity-50'>
|
|
<EditIcon />
|
|
</span>
|
|
</Tooltip>
|
|
<Tooltip
|
|
color='danger'
|
|
content='Delete Category'>
|
|
<span
|
|
className='cursor-pointer text-lg text-danger active:opacity-50'
|
|
onClick={() =>
|
|
deleteCategory(item.id)
|
|
}>
|
|
<DeleteIcon />
|
|
</span>
|
|
</Tooltip>
|
|
</div>
|
|
</TableCell>
|
|
</TableRow>
|
|
)}
|
|
</TableBody>
|
|
</Table>
|
|
</>
|
|
)
|
|
}
|