feat: support column meta classNames in DataTable

Allow passing className via columnDef.meta to TableHead and
TableCell for per-column styling.
This commit is contained in:
2026-06-07 23:05:10 +00:00 Unverified
parent 91a71e70fc
commit 429595cacf
+22 -3
View File
@@ -79,13 +79,22 @@ export function DataTable<TData, TValue>({
return ( return (
<div className={cn("overflow-hidden rounded-md border", className)}> <div className={cn("overflow-hidden rounded-md border", className)}>
<Table> <Table className="table-fixed">
<TableHeader> <TableHeader>
{table.getHeaderGroups().map((headerGroup) => ( {table.getHeaderGroups().map((headerGroup) => (
<TableRow key={headerGroup.id}> <TableRow key={headerGroup.id}>
{headerGroup.headers.map((header) => { {headerGroup.headers.map((header) => {
return ( return (
<TableHead key={header.id}> <TableHead
key={header.id}
className={
(
header.column.columnDef.meta as
| { className?: string }
| undefined
)?.className
}
>
{header.isPlaceholder {header.isPlaceholder
? null ? null
: flexRender( : flexRender(
@@ -106,9 +115,19 @@ export function DataTable<TData, TValue>({
<TableRow <TableRow
data-state={row.getIsSelected() && "selected"} data-state={row.getIsSelected() && "selected"}
onClick={() => onClick?.(row.original)} onClick={() => onClick?.(row.original)}
className="group"
> >
{row.getVisibleCells().map((cell) => ( {row.getVisibleCells().map((cell) => (
<TableCell key={cell.id}> <TableCell
key={cell.id}
className={
(
cell.column.columnDef.meta as
| { className?: string }
| undefined
)?.className
}
>
{flexRender( {flexRender(
cell.column.columnDef.cell, cell.column.columnDef.cell,
cell.getContext(), cell.getContext(),