Add column sizing

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
This commit is contained in:
Charles de Dreuille
2025-04-15 10:09:19 +02:00
parent 5e89ce52f1
commit 5ee4fc24ab
4 changed files with 26 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/canon': patch
---
Add support for column sizing in DataTable.
@@ -36,6 +36,7 @@ const DataTablePagination = forwardRef(
return (
<div
ref={ref}
style={{ minWidth: table?.getTotalSize() }}
className={clsx('canon-DataTablePagination', className)}
{...rest}
>
@@ -28,13 +28,21 @@ const DataTableTable = forwardRef(
const { table } = useDataTable();
return (
<Table.Root ref={ref} className={clsx(className)} {...rest}>
<Table.Root
ref={ref}
style={{ minWidth: table.getTotalSize() }}
className={clsx(className)}
{...rest}
>
<Table.Header>
{table.getHeaderGroups().map(headerGroup => (
<Table.Row key={headerGroup.id}>
{headerGroup.headers.map(header => {
return (
<Table.Head key={header.id}>
<Table.Head
key={header.id}
style={{ width: header.getSize() }}
>
{header.isPlaceholder
? null
: flexRender(
@@ -55,7 +63,10 @@ const DataTableTable = forwardRef(
data-state={row.getIsSelected() && 'selected'}
>
{row.getVisibleCells().map(cell => (
<Table.Cell key={cell.id}>
<Table.Cell
key={cell.id}
style={{ width: cell.column.getSize() }}
>
{flexRender(cell.column.columnDef.cell, cell.getContext())}
</Table.Cell>
))}
@@ -66,6 +77,7 @@ const DataTableTable = forwardRef(
<Table.Cell
colSpan={table.getAllColumns().length}
className="h-24 text-center"
style={{ width: table.getTotalSize() }}
>
No results.
</Table.Cell>
@@ -42,6 +42,7 @@ export const columns: ColumnDef<DataProps>[] = [
),
enableSorting: false,
enableHiding: false,
size: 50,
},
{
accessorKey: 'name',
@@ -53,6 +54,7 @@ export const columns: ColumnDef<DataProps>[] = [
href="/"
/>
),
size: 450,
},
{
accessorKey: 'owner',
@@ -60,15 +62,18 @@ export const columns: ColumnDef<DataProps>[] = [
cell: ({ row }) => (
<DataTable.TableCellText title={row.getValue('owner')} />
),
size: 200,
},
{
accessorKey: 'type',
header: 'Type',
cell: ({ row }) => <DataTable.TableCellText title={row.getValue('type')} />,
size: 150,
},
{
accessorKey: 'tags',
header: 'Tags',
cell: ({ row }) => <DataTable.TableCellText title={row.getValue('tags')} />,
size: 150,
},
];