RowDragDropConfig
Configuration for RowDragDropPlugin.
All keys not annotated as “cross-grid” are identical in name and default to
RowReorderConfig, so migration is new RowReorderPlugin(cfg) →
new RowDragDropPlugin(cfg) with zero changes.
Properties
Section titled “Properties”| Property | Type | Description |
|---|---|---|
enableKeyboard? | boolean | Enable keyboard shortcuts (Ctrl + ↑ / Ctrl + ↓) for moving rows. Keyboard moves are intra-grid only. |
showDragHandle? | boolean | Show a drag handle column. |
dragFrom? | row | handle | both | Where on a row a drag can be initiated. |
dragHandlePosition? | left | right | Position of the drag handle column. |
dragHandleWidth? | number | Width of the drag handle column in pixels. |
debounceMs? | number | Debounce time in milliseconds for rapid keyboard moves. Events are batched and emitted after this delay. |
animation? | false | flip | Animation type for row movement. - false: instant reorder - 'flip': FLIP animation (slides rows smoothly) |
canDrag? | (row: T, index: number) => boolean | Validation callback invoked once at dragstart (and on intra-grid keyboard moves) to decide whether a row can be picked up. Replaces RowReorderConfig.canMove for the dragstart side. |
canMove? | (row: T, fromIndex: number, toIndex: number, direction: up | down) => boolean | ⚠️ |
dropZone? | string | Shared zone identifier. Two grids that opt into the same zone may exchange rows. Omit to behave exactly like the legacy RowReorderPlugin — intra-grid only, no cross-grid affordances. |
operation? | copy | move | Cross-grid drop semantics. - 'move' (default): the row is removed from the source grid’s _rows and inserted into the target. - 'copy': the source _rows is unchanged; the target inserts a copy. |
canDrop? | (payload: RowDragPayload<T>, targetIndex: number) => boolean | Validation callback invoked during dragover (same-window) and at drop time to decide whether a drop should be accepted at targetIndex. |
serializeRow? | (row: T) => unknown | Optional row transformer applied when a row leaves this grid in a cross-window / cross-iframe drag (i.e. when the WeakRef live-reference path cannot be used). Use to strip internal IDs or rename fields before the row crosses a security boundary. |
deserializeRow? | (raw: unknown) => T | Optional row transformer applied when a row lands in this grid via a cross-window / cross-iframe drag. Use to assign new IDs or remap fields. |
autoScroll? | boolean | object | Auto-scroll the target grid when the cursor approaches its viewport top or bottom edge during drag. |
Property Details
Section titled “Property Details”enableKeyboard
Section titled “enableKeyboard”Default: true
showDragHandle
Section titled “showDragHandle”Show a drag handle column.
Defaults to true when dragFrom is
'handle' (the default) or 'both', and to false when dragFrom is
'row' — when the entire row is the drag handle, the dedicated grip
column adds no value. Set explicitly to override.
Default: true (or false when dragFrom: ‘row’)
dragFrom
Section titled “dragFrom”Where on a row a drag can be initiated.
'handle'(default): only the grip column starts a drag. Backwards compatible withRowReorderPlugin.'row': any cell starts a drag, and the grip column is hidden by default. Recommended for transfer-list / kanban-style UIs where a dedicated handle adds visual noise.'both': either the grip OR any cell starts a drag.
Drags initiated on interactive descendants (inputs, buttons, anchors, contenteditable, open cell editors, selection checkboxes) are always suppressed regardless of this setting so native interactions keep working.
Default: 'handle'
dragHandlePosition
Section titled “dragHandlePosition”Default: 'left'
dragHandleWidth
Section titled “dragHandleWidth”Default: 40
debounceMs
Section titled “debounceMs”Default: 150
animation
Section titled “animation”Default: 'flip'
operation
Section titled “operation”Cross-grid drop semantics.
'move'(default): the row is removed from the source grid’s_rowsand inserted into the target.'copy': the source_rowsis unchanged; the target inserts a copy.
The user’s input sourceRows array is never mutated on either side —
persistence is consumer-driven via the row-transfer event.
Default: 'move'
autoScroll
Section titled “autoScroll”Auto-scroll the target grid when the cursor approaches its viewport top or bottom edge during drag.
true(default): enable with the default tuning (edgeSize: 60,speed: 8,maxSpeed: 24).false: disabled.- object: overrides any of the tuning fields.
Default: true