This commit is contained in:
2025-11-10 00:48:39 -03:00
parent 24dfefe395
commit c3f370e86c
3 changed files with 152 additions and 149 deletions

View File

@@ -6,6 +6,7 @@ import {
useReactTable,
type ColumnDef,
type ColumnSort,
type RowSelectionState,
type SortingState,
type Table,
type VisibilityState
@@ -34,7 +35,7 @@ interface DataTableProps<TData, TValue> {
children?: ReactNode
columns: ColumnDef<TData, TValue>[]
data: TData[]
onRowSelectionChange?: (rowSelection: TData[]) => void
setSelectedRows?: (selectedRows: TData[]) => void
pageIndex: number
sort: SortingState
pageSize: number
@@ -62,16 +63,17 @@ export function DataTable<TData, TValue>({
pageIndex,
pageSize,
rowCount,
onRowSelectionChange,
setSelectedRows,
hiddenColumn = []
}: DataTableProps<TData, TValue>) {
const [searchParams, setSearchParams] = useSearchParams()
const hiddenColumn_ = Object.fromEntries(
const columnVisibilityInit = Object.fromEntries(
hiddenColumn.map((column) => [column, false])
)
const [searchParams, setSearchParams] = useSearchParams()
const [columnVisibility, setColumnVisibility] =
useState<VisibilityState>(hiddenColumn_)
const [rowSelection, setRowSelection] = useState({})
useState<VisibilityState>(columnVisibilityInit)
const [rowSelection, setRowSelection] = useState<RowSelectionState>({})
const sortParam = searchParams.get('sort')
const sorting = sortParam
? sortParam.split(',').map((s) => {
@@ -84,9 +86,7 @@ export function DataTable<TData, TValue>({
const newState =
typeof updater === 'function' ? updater({ pageIndex, pageSize }) : updater
onRowSelectionChange?.([])
setRowSelection({})
setSearchParams((searchParams) => {
searchParams.set('p', newState?.pageIndex.toString())
searchParams.set('perPage', newState?.pageSize.toString())
@@ -135,8 +135,8 @@ export function DataTable<TData, TValue>({
useEffect(() => {
const selected = table.getSelectedRowModel().flatRows.map((r) => r.original)
onRowSelectionChange?.(selected)
}, [rowSelection, table])
setSelectedRows?.(selected)
}, [rowSelection])
return (
<TableContext value={{ table }}>