This commit is contained in:
2025-11-10 00:24:07 -03:00
parent 7f385bf175
commit 24dfefe395
6 changed files with 66 additions and 42 deletions

View File

@@ -10,7 +10,13 @@ import {
type Table,
type VisibilityState
} from '@tanstack/react-table'
import { createContext, useEffect, useState, type ReactNode } from 'react'
import {
createContext,
useContext,
useEffect,
useState,
type ReactNode
} from 'react'
import { useSearchParams } from 'react-router'
import { Card, CardContent } from '@repo/ui/components/ui/card'
@@ -36,7 +42,17 @@ interface DataTableProps<TData, TValue> {
hiddenColumn?: string[]
}
export const TableContext = createContext<{ table: Table<any> } | null>(null)
const TableContext = createContext<{ table: Table<any> } | null>(null)
export function useDataTable<TData>() {
const ctx = useContext(TableContext) as { table: Table<TData> } | null
if (!ctx) {
throw new Error('TableContext is null')
}
return ctx
}
export function DataTable<TData, TValue>({
children,
@@ -68,6 +84,9 @@ 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())