Uecko_ERP/packages/rdx-ui/src/components/datatable/data-table-view-options.tsx

51 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-11-13 18:57:45 +00:00
"use client";
2025-10-16 11:18:55 +00:00
import {
2025-11-13 18:57:45 +00:00
Button,
DropdownMenu,
2025-10-16 11:18:55 +00:00
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuLabel,
DropdownMenuSeparator,
2025-11-13 18:57:45 +00:00
DropdownMenuTrigger,
} from "@repo/shadcn-ui/components";
import type { Table } from "@tanstack/react-table";
import { Settings2 } from "lucide-react";
import { useTranslation } from "../../locales/i18n.ts";
2025-10-16 11:18:55 +00:00
2025-11-13 18:57:45 +00:00
export function DataTableViewOptions<TData>({ table }: { table: Table<TData> }) {
const { t } = useTranslation();
2025-10-16 11:18:55 +00:00
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
2025-11-13 18:57:45 +00:00
<Button className="ml-auto hidden h-8 lg:flex" size="sm" type="button" variant="outline">
2025-10-16 11:18:55 +00:00
<Settings2 />
2025-11-13 18:57:45 +00:00
{t("components.datatable_view_options.view_button")}
2025-10-16 11:18:55 +00:00
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-[150px]">
2025-11-13 18:57:45 +00:00
<DropdownMenuLabel>
{t("components.datatable_view_options.toggle_columns")}
</DropdownMenuLabel>
2025-10-16 11:18:55 +00:00
<DropdownMenuSeparator />
{table
.getAllColumns()
2025-11-13 18:57:45 +00:00
.filter((column) => typeof column.accessorFn !== "undefined" && column.getCanHide())
2025-10-16 11:18:55 +00:00
.map((column) => {
return (
<DropdownMenuCheckboxItem
checked={column.getIsVisible()}
2025-11-13 18:57:45 +00:00
className="capitalize"
key={column.id}
2025-10-16 11:18:55 +00:00
onCheckedChange={(value) => column.toggleVisibility(!!value)}
>
{column.id}
</DropdownMenuCheckboxItem>
2025-11-13 18:57:45 +00:00
);
2025-10-16 11:18:55 +00:00
})}
</DropdownMenuContent>
</DropdownMenu>
2025-11-13 18:57:45 +00:00
);
2025-10-16 11:18:55 +00:00
}