diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/columns.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/columns.tsx index 673a7b1..e9fc3c2 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/columns.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/columns.tsx @@ -47,12 +47,14 @@ export const columns: ColumnDef[] = [ { id: 'select', header: DataTableColumnHeaderSelect, - cell: DataTableColumnSelect + cell: DataTableColumnSelect, + meta: { className: 'w-9' } }, ...columns_, { - id: 'actions', - cell: ActionMenu + id: 'action', + cell: ActionMenu, + meta: { className: 'w-12' } } ] diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx index 25613b2..7aba3e9 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx @@ -89,6 +89,7 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) { sort={[{ id: 'created_at', desc: true }]} columns={columns} data={hits as Enrollment[]} + columnPinning={{ left: ['select'], right: ['action'] }} pageIndex={page - 1} pageSize={hitsPerPage} setSelectedRows={setSelectedRows} diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.orders._index/columns.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.orders._index/columns.tsx index 4bad4b3..7998337 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.orders._index/columns.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.orders._index/columns.tsx @@ -14,7 +14,8 @@ export const columns: ColumnDef[] = [ { id: 'select', header: DataTableColumnHeaderSelect, - cell: DataTableColumnSelect + cell: DataTableColumnSelect, + meta: { className: 'w-9' } }, ...columns_ ] diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/columns.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/columns.tsx index 0888185..ac016d4 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/columns.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/columns.tsx @@ -42,12 +42,14 @@ export const columns: ColumnDef[] = [ { id: 'select', header: DataTableColumnHeaderSelect, - cell: DataTableColumnSelect + cell: DataTableColumnSelect, + meta: { className: 'w-9' } }, ...columns_, { id: 'actions', - cell: ActionMenu + cell: ActionMenu, + meta: { className: 'w-12' } } ] diff --git a/packages/ui/src/components/data-table/data-table.tsx b/packages/ui/src/components/data-table/data-table.tsx index 4f9e8ff..1ea75fb 100644 --- a/packages/ui/src/components/data-table/data-table.tsx +++ b/packages/ui/src/components/data-table/data-table.tsx @@ -5,6 +5,7 @@ import { getCoreRowModel, useReactTable, type ColumnDef, + type ColumnPinningState, type ColumnSort, type RowSelectionState, type SortingState, @@ -38,6 +39,7 @@ import { DataTablePagination } from './pagination' interface DataTableProps { children?: ReactNode columns: ColumnDef[] + columnPinning?: ColumnPinningState data: TData[] setSelectedRows?: (selectedRows: TData[]) => void pageIndex: number @@ -67,6 +69,7 @@ export function DataTable({ data, children, columns, + columnPinning = { left: [], right: [] }, sort, pageIndex, pageSize, @@ -192,10 +195,12 @@ export function DataTable({ sorting, rowSelection, columnVisibility, + columnPinning, pagination: { pageIndex, pageSize } }, manualSorting: true, manualPagination: true, + enableColumnPinning: true, enableRowSelection: true, getRowId, getCoreRowModel: getCoreRowModel(), @@ -220,7 +225,7 @@ export function DataTable({ {children} - + {table.getHeaderGroups().map((headerGroup) => ( ({ className="hover:bg-transparent" > {headerGroup.headers.map((header) => { + const isPinned = header.column.getIsPinned() + return ( ({ {table.getRowModel().rows?.length ? ( - table.getRowModel().rows.map((row) => ( - - {row.getVisibleCells().map((cell) => ( - - {flexRender( - cell.column.columnDef.cell, - cell.getContext() - )} - - ))} - - )) + table.getRowModel().rows.map((row) => { + const isSelected = row.getIsSelected() + + return ( + + {row.getVisibleCells().map((cell) => { + const isPinned = cell.column.getIsPinned() + + return ( + + {flexRender( + cell.column.columnDef.cell, + cell.getContext() + )} + + ) + })} + + ) + }) ) : ( [] = [ return (
- {initials(user.name)} + + {initials(user.name)} +
    diff --git a/packages/ui/src/routes/users/columns.tsx b/packages/ui/src/routes/users/columns.tsx index d9fbf48..91f00dd 100644 --- a/packages/ui/src/routes/users/columns.tsx +++ b/packages/ui/src/routes/users/columns.tsx @@ -23,7 +23,7 @@ export const columns: ColumnDef[] = [ return (
    - {initials(name)} + {initials(name)}