Package-level declarations
Types
Declarative specification of a table column.
Builder for a single editable ColumnSpec. Extends ReadonlyColumnBuilder with editing capabilities.
DSL builder for a list of editable ColumnSpec.
Marked the table API while it was still settling. Nothing in the library carries it as of 2.0.0 — the API is stable and needs no opt-in.
Builder for a single readonly ColumnSpec.
Type alias for readonly table columns (without table data)
DSL builder for a list of readonly ColumnSpec.
Scope for a row block's header band. Distinct from TableCellScope (not a supertype of it) so a Modifier.draggableHandle call here binds unambiguously to the whole-block (outer unit) engine, while the same call inside a cell binds to whatever engine that row is rendered under.
Row blocks: runs of adjacent rows that render and drag as one unit, declared by identity rather than by position — the library derives block extents from the same snapshot it renders, so they cannot go stale against an asynchronously filtered list. The consumer's data stays untouched during a gesture; the move arrives as one event at drop.
The result of one completed within-block drag gesture: a single row moved among its block-mates, expressed in stable keys. Anchors are the moved row's visible neighbours inside the same block; a null anchor means the block's edge (first/last visible row).
Scope available inside table body cell content.
Scope available for a rendered table item.
Functions
Applies move to the SOURCE list — the lift from the rendered, possibly filtered view back to the consumer's source of truth.
Lifts a RowWithinBlockMove to the SOURCE list: relocates the single moved row among its block-mates, using RowWithinBlockMove.afterKey as the primary anchor and beforeKey as the fallback. Block members hidden by the current filter keep their relative order; the moved row lands immediately adjacent to the resolved visible anchor. The list is left untouched when the moved row is gone, its block id no longer matches, or neither anchor resolves.
fun Modifier.draggableHandle(enabled: Boolean = true, interactionSource: MutableInteractionSource? = null, onDragStarted: (startedPosition: Offset) -> Unit = {}, onDragStopped: () -> Unit = {}, dragGestureDetector: DragGestureDetector = DragGestureDetector.Press): Modifier
Makes this modifier the drag handle for the whole block, from its header band. The node must be a descendant of the block's ReorderableItem.
fun Modifier.draggableHandle(enabled: Boolean = true, interactionSource: MutableInteractionSource? = null, onDragStarted: (startedPosition: Offset) -> Unit = {}, onDragStopped: () -> Unit = {}, dragGestureDetector: DragGestureDetector = DragGestureDetector.Press): Modifier
Makes this modifier act as a drag handle for the current table item from cell content.
Composable editable data table that renders a header and a virtualized list of rows.
DSL entry to declare editable table columns.
Filters at block granularity: a block survives in full when ANY member matches, so the rendered blocks never show partially. The plain row-level filter stays first-class — hidden members simply travel with their block on a drag — this helper exists for consumers who want match-whole-block semantics instead.
fun Modifier.longPressDraggableHandle(enabled: Boolean = true, interactionSource: MutableInteractionSource? = null, onDragStarted: (startedPosition: Offset) -> Unit = {}, onDragStopped: () -> Unit = {}): Modifier
Makes this modifier act as a long-press drag handle for the current table item from cell content.
Sorts rows within each block while keeping every block whole — a plain sortedBy fragments blocks into duplicate bands. Each unit — a block or a standalone row — takes its position from its minimal member under comparator, so the list still reads as sorted at unit granularity. The sort is stable both within a block and between units: ties keep their existing order, and re-applying the same sort changes nothing.
Composable read-only data table that renders a header and a virtualized list of rows.
Composable data table with custom table data state.
Renders a compact header row with chips describing currently active filters. Provides quick clear actions for individual columns or all at once.
DSL entry to declare readonly table columns with custom table data type.