DataTable Row DnD
niko-table/data-table-row-dndFreeComponent
Drag-and-drop row reordering with composable primitives. Includes DnD provider, draggable row, drag handle, and row DnD table body. Does not ship column DnD.
Install it
npx shadcn@latest add https://niko-table.com/r/data-table-row-dnd.jsonSource
1"use client"23/**4 * niko-table — created by Semir N. (Semkoo, https://github.com/Semkoo) with AI assistance.5 *6 * Before reporting anything: please check the changelog first.7 * - In-repo: ./CHANGELOG.md8 * - Docs site: https://niko-table.com/changelog9 *10 * Found a bug or have a fix? Open an issue or PR on GitHub so other11 * users (and future LLMs reading this code) benefit:12 * https://github.com/Semkoo/niko-table-registry13 */14import { useDataTable } from "../core/data-table-context"15import {16 TableRowDndProvider,17 type TableRowDndProviderProps,18 TableDraggableRow,19 type TableDraggableRowProps,20 TableRowDragHandle,21 type TableRowDragHandleProps,22} from "../filters/table-row-dnd"2324// ============================================================================25// DataTableRowDndProvider26// ============================================================================2728export type DataTableRowDndProviderProps<TData> = Omit<29 TableRowDndProviderProps<TData>,30 "table"31>3233/**34 * Context-aware row DnD provider that automatically connects to the DataTable context.35 *36 * @example37 * <DataTableRoot data={data} columns={columns} getRowId={(row) => row.id}>38 * <DataTableRowDndProvider data={data} onReorder={setData}>39 * <DataTable>40 * <DataTableHeader />41 * <DataTableDndBody />42 * </DataTable>43 * </DataTableRowDndProvider>44 * </DataTableRoot>45 */46export function DataTableRowDndProvider<TData>(47 props: DataTableRowDndProviderProps<TData>,48) {49 const { table } = useDataTable<TData>()50 return <TableRowDndProvider<TData> table={table} {...props} />51}5253DataTableRowDndProvider.displayName = "DataTableRowDndProvider"5455// ============================================================================56// DataTableDraggableRow57// ============================================================================5859export type DataTableDraggableRowProps<TData> = TableDraggableRowProps<TData>6061/**62 * Context-aware draggable row component.63 *64 * @example65 * <DataTableDraggableRow row={row}>66 * {row.getVisibleCells().map(cell => (67 * <TableCell key={cell.id}>68 * {flexRender(cell.column.columnDef.cell, cell.getContext())}69 * </TableCell>70 * ))}71 * </DataTableDraggableRow>72 */73export function DataTableDraggableRow<TData>(74 props: DataTableDraggableRowProps<TData>,75) {76 return <TableDraggableRow<TData> {...props} />77}7879DataTableDraggableRow.displayName = "DataTableDraggableRow"8081// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from niko-table
All 31 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| DataTable Asidedata-table-aside | niko-table | Components | Free | 1 dep | |
| DataTable Clear Filterdata-table-clear-filter | niko-table | Components | Free | 1 dep · 2 files | |
| DataTable Column Auto-fitdata-table-column-auto-fit | niko-table | Components | Free | no deps · 2 files | |
| DataTable Column Date Filterdata-table-column-date-filter | niko-table | Components | Free | 2 deps · 2 files | |
| DataTable Column DnDdata-table-column-dnd | niko-table | Components | Free | 4 deps · 3 files | |
| DataTable Column Faceted Filterdata-table-column-faceted-filter | niko-table | Components | Free | 1 dep · 3 files | |
| DataTable Column Hidedata-table-column-hide | niko-table | Components | Free | 1 dep · 2 files | |
| DataTable Column Pindata-table-column-pin | niko-table | Components | Free | 1 dep · 2 files |
