diff options
Diffstat (limited to 'components/client-table/client-table-view-options.tsx')
| -rw-r--r-- | components/client-table/client-table-view-options.tsx | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/components/client-table/client-table-view-options.tsx b/components/client-table/client-table-view-options.tsx new file mode 100644 index 00000000..3b659fcd --- /dev/null +++ b/components/client-table/client-table-view-options.tsx @@ -0,0 +1,67 @@ +"use client" + +import { DropdownMenuTrigger } from "@radix-ui/react-dropdown-menu" +import { MixerHorizontalIcon } from "@radix-ui/react-icons" +import { Table } from "@tanstack/react-table" + +import { Button } from "@/components/ui/button" +import { + DropdownMenu, + DropdownMenuCheckboxItem, + DropdownMenuContent, + DropdownMenuLabel, + DropdownMenuSeparator, +} from "@/components/ui/dropdown-menu" + +interface ClientTableViewOptionsProps<TData> { + table: Table<TData> +} + +export function ClientTableViewOptions<TData>({ + table, +}: ClientTableViewOptionsProps<TData>) { + return ( + <DropdownMenu> + <DropdownMenuTrigger asChild> + <Button + variant="outline" + size="sm" + className="ml-auto hidden h-8 lg:flex" + > + <MixerHorizontalIcon className="mr-2 h-4 w-4" /> + View + </Button> + </DropdownMenuTrigger> + <DropdownMenuContent align="end" className="w-[150px]"> + <DropdownMenuLabel>Toggle columns</DropdownMenuLabel> + <DropdownMenuSeparator /> + {table + .getAllLeafColumns() + .filter( + (column) => + typeof column.accessorFn !== "undefined" && column.getCanHide() + ) + .map((column) => { + const header = column.columnDef.header + let label = column.id + if (typeof header === "string") { + label = header + } + + return ( + <DropdownMenuCheckboxItem + key={column.id} + className="capitalize" + checked={column.getIsVisible()} + onCheckedChange={(value) => column.toggleVisibility(!!value)} + onSelect={(e) => e.preventDefault()} // default action close the select menu. + > + {label} + </DropdownMenuCheckboxItem> + ) + })} + </DropdownMenuContent> + </DropdownMenu> + ) +} + |
