import { StatsColumns } from "@/lib/columns" import { ItemWithSelection } from "@/lib/table/defs" import { InventoryColumns } from "@/lib/table/tanstack" import { inventoryItemsCurrentPageAtom, preferenceInventoryTab } from "@/state/atoms" import { flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table" import { atom, useAtom, useAtomValue } from "jotai" import { useMemo } from "react" const columnVisibilityAtom = atom((get)=>{ const itemTab = get(preferenceInventoryTab) if(!["2","4"].includes(itemTab)) { return Object.fromEntries([ ...StatsColumns.map(x=>["stats."+x,false]), ["slots",false] ]) } return { } }) export const InventoryTable = () => { const items = useAtomValue(inventoryItemsCurrentPageAtom) const columns = useMemo(()=>{ return [ ...Object.values(InventoryColumns) ] }, []) const columnVisibility = useAtomValue(columnVisibilityAtom) console.log(columnVisibility) const table = useReactTable({ getRowId: row =>row.item.unique_id.toString(), data: items, state: { columnVisibility, }, columns, getCoreRowModel: getCoreRowModel(), }) return (
{ e.preventDefault() return }} className="border-spacing-x-2 border-separate"> {table.getHeaderGroups().map(headerGroup => ( {headerGroup.headers.map(header => ( ))} ))} {table.getRowModel().rows.map(row => ( {row.getVisibleCells().map(cell => ( ))} ))}
{header.isPlaceholder ? null : flexRender( header.column.columnDef.header, header.getContext() )}
{flexRender(cell.column.columnDef.cell, cell.getContext())}
) }