"use client"; import { tasks, type Task } from "@/db/schema"; import { ArrowUpIcon, CheckCircledIcon, Cross2Icon, TrashIcon, } from "@radix-ui/react-icons"; import { SelectTrigger } from "@radix-ui/react-select"; import { type Table } from "@tanstack/react-table"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectGroup, SelectItem, } from "@/components/ui/select"; import { updateTaskPriorityAction, updateTaskStatusAction, } from "@/app/_actions/task"; interface DataTableFloatingBarProps extends React.HTMLAttributes { table: Table; } export function DataTableFloatingBar({ table, className, ...props }: DataTableFloatingBarProps) { if (table.getFilteredSelectedRowModel().rows.length <= 0) return null; function updateTasksStatus(table: Table, status: string) { const selectedRows = table.getFilteredSelectedRowModel() .rows as unknown as { original: Task }[]; selectedRows.map(async (row) => { await updateTaskStatusAction({ id: row.original.id, status: status as Task["status"], }); }); } function updateTasksPriority(table: Table, priority: string) { const selectedRows = table.getFilteredSelectedRowModel() .rows as unknown as { original: Task }[]; selectedRows.map(async (row) => { await updateTaskPriorityAction({ id: row.original.id, priority: priority as Task["priority"], }); }); } return (
{table.getFilteredSelectedRowModel().rows.length} row(s) selected
); }