import { DataTablaRowActionFunction, DataTableRowActions, DataTableRowDragHandleCell, } from "@/components"; import { Checkbox } from "@/ui"; import { ColumnDef, Row, Table } from "@tanstack/react-table"; import { MoreHorizontalIcon, UnfoldVertical } from "lucide-react"; import { useMemo } from "react"; /*function getSelectedRowRange( rows: Row[], currentID: number, selectedID: number, ): Row[] { const rangeStart = selectedID > currentID ? currentID : selectedID; const rangeEnd = rangeStart === currentID ? selectedID : currentID; return rows.slice(rangeStart, rangeEnd + 1); }*/ export function useDetailColumns( columns: ColumnDef[], options: { enableDragHandleColumn?: boolean; enableSelectionColumn?: boolean; enableActionsColumn?: boolean; rowActionFn?: DataTablaRowActionFunction; } = {} ): ColumnDef[] { const { enableDragHandleColumn = false, enableSelectionColumn = false, enableActionsColumn = false, rowActionFn = undefined, } = options; // const lastSelectedId = ""; return useMemo(() => { if (enableSelectionColumn) { columns.unshift({ id: "select", header: ({ table }) => ( table.toggleAllPageRowsSelected(!!value)} aria-label='Seleccionar todo' className='translate-y-[2px]' /> ), // eslint-disable-next-line @typescript-eslint/no-unused-vars cell: ({ row, table }: { row: Row; table: Table }) => ( { if (e.shiftKey) { const { rows, rowsById } = table.getRowModel(); const rowsToToggle = getSelectedRowRange( rows, Number(row.id), Number(lastSelectedId), ); const isCellSelected = rowsById[row.id].getIsSelected(); rowsToToggle.forEach((_row) => _row.toggleSelected(!isCellSelected), ); } else { row.toggleSelected(); } lastSelectedId = row.id; }}*/ /> ), enableSorting: false, enableHiding: false, size: 30, }); } if (enableDragHandleColumn) { columns.unshift({ id: "row_drag_handle", header: () => ( ), cell: ({ row }: { row: Row }) => , size: 16, enableSorting: false, enableHiding: false, }); } if (enableActionsColumn) { columns.push({ id: "row_actions", header: () => ( ), cell: (props) => { return ; }, size: 16, enableSorting: false, enableHiding: false, }); } return columns; }, []); }