Openstatus www.openstatus.dev
at 0d239ea3d5b1c416d7932148029c5bc4cbc062af 56 lines 1.6 kB view raw
1"use client"; 2 3import type { Table } from "@tanstack/react-table"; 4import { Settings2 } from "lucide-react"; 5 6import { Button } from "@openstatus/ui/src/components/button"; 7import { 8 DropdownMenu, 9 DropdownMenuCheckboxItem, 10 DropdownMenuContent, 11 DropdownMenuLabel, 12 DropdownMenuSeparator, 13 DropdownMenuTrigger, 14} from "@openstatus/ui/src/components/dropdown-menu"; 15 16interface DataTableViewOptionsProps<TData> { 17 table: Table<TData>; 18} 19 20export function DataTableViewOptions<TData>({ 21 table, 22}: DataTableViewOptionsProps<TData>) { 23 return ( 24 <DropdownMenu> 25 <DropdownMenuTrigger asChild> 26 <Button variant="outline" size="sm" className="shadow-none"> 27 <Settings2 className="mr-2 h-4 w-4" /> 28 View 29 </Button> 30 </DropdownMenuTrigger> 31 <DropdownMenuContent align="end" className="w-[150px]"> 32 <DropdownMenuLabel>Display properties</DropdownMenuLabel> 33 <DropdownMenuSeparator /> 34 {table 35 .getAllColumns() 36 .filter( 37 (column) => 38 typeof column.accessorFn !== "undefined" && column.getCanHide(), 39 ) 40 .map((column) => { 41 return ( 42 <DropdownMenuCheckboxItem 43 key={column.id} 44 className={"capitalize"} 45 onSelect={(e) => e.preventDefault()} 46 checked={column.getIsVisible()} 47 onCheckedChange={(value) => column.toggleVisibility(!!value)} 48 > 49 {column.id} 50 </DropdownMenuCheckboxItem> 51 ); 52 })} 53 </DropdownMenuContent> 54 </DropdownMenu> 55 ); 56}