import { GripVertical, Settings2 } from 'lucide-react' import { useMemo, useState } from 'react' import { Checkbox_Shadcn_, Command_Shadcn_ as Command, CommandEmpty_Shadcn_ as CommandEmpty, CommandGroup_Shadcn_ as CommandGroup, CommandInput_Shadcn_ as CommandInput, CommandItem_Shadcn_ as CommandItem, CommandList_Shadcn_ as CommandList, Popover_Shadcn_ as Popover, PopoverContent_Shadcn_ as PopoverContent, PopoverTrigger_Shadcn_ as PopoverTrigger, } from 'ui' import { ButtonTooltip } from '../ButtonTooltip' import { Sortable, SortableDragHandle, SortableItem } from './primitives/Sortable' import { useDataTable } from './providers/DataTableProvider' export function DataTableViewOptions() { const { table, enableColumnOrdering } = useDataTable() const [open, setOpen] = useState(false) const [drag, setDrag] = useState(false) const [search, setSearch] = useState('') const columnOrder = table.getState().columnOrder const sortedColumns = useMemo( () => table.getAllColumns().sort((a, b) => { return columnOrder.indexOf(a.id) - columnOrder.indexOf(b.id) }), [columnOrder] ) return ( } tooltip={{ content: { side: 'bottom', text: 'Toggle column visibility' } }} /> No option found. ({ id: c.id }))} onValueChange={(items) => table.setColumnOrder(items.map((c) => c.id))} overlay={
} onDragStart={() => setDrag(true)} onDragEnd={() => setDrag(false)} onDragCancel={() => setDrag(false)} > {sortedColumns .filter( (column) => typeof column.accessorFn !== 'undefined' && column.getCanHide() ) .map((column) => ( column.toggleVisibility(!column.getIsVisible())} className="capitalize p-1" disabled={drag} > {(column.columnDef.meta as any)?.label || column.id} {enableColumnOrdering && !search ? ( ) : null} ))} ) }