DataGridColumn

Column controller for a DataGrid.

A standalone, persistent plain class (one per column). It holds column config + behavior and tracks the cells that are currently mounted for this column. Off-screen cells don't exist as DOM, so the full-dataset view is provided lazily via DataGridColumn#cellHandles.

Constructor

new DataGridColumn(options)
options : Object optional
index : number optional

0-based column position (assigned by the grid)

width : number | string optional

explicit column width (px number or CSS px string); falls back to the grid's default width when omitted

colspan : number optional

number of grid tracks this column occupies. >1 splits the column into sub-tracks a cell can address (e.g. via grid-template-columns: subgrid) so its content aligns into aligned sub-columns across every row. Sub-tracks must be fixed px summing to width — see widths — so the px-based column geometry (offsets, selection, resize) stays in sync

widths : Array.<number> | string optional

explicit sub-track widths for a colspan>1 column: a px-number array or a space-separated px string ([120,120,120] / "120px 120px 120px"). Their sum is the column's total width. Omit to split width evenly across colspan tracks

frozen : boolean optional

pin this column to the left while the body scrolls

header : function | string optional

header content; function receives (column, grid)

render : function optional

cell content renderer; receives (record, cell, column, grid)

value : function optional

optional override for the copy/serialized value; receives (record, column). Defaults to the render result.

attribute : string optional

convenience: when no render is given, read this key off the record

class : string optional

extra class(es) applied to header + cells

unnest : function optional

expand the record's nested collection into stacked sub-rows for this cell (SQL UNNEST/explode). A function (record) => Array returning the sub-records to stack (read-only display in v1)

splitInto : function optional

deprecated alias for unnest

record : function optional

resolve the record this column reads/writes from the row's record (e.g. a row TIM → its Trait). A function (rowRecord) => record | Promise<record>. When omitted the column operates on the row's record directly. renderContent/valueFor and (for Spreadsheet) input/paste/clear/toggle all operate on the resolved record.

Instance Methods

A CellHandle for this column at a 0-based row index (or null).

CellHandles for this column across the whole dataset (lazy, transient).

The configured width in px (parsed), or defaultWidth when unset/invalid.

The grid-column value placing this column: its 1-based start line, spanning colspan tracks. startLine is assigned by the grid (prefix-sum of colspans); falls back to index + 1 before assignment.

Resolve header content.

Fallback used by DataGridColumn#renderContent when no render is configured: reads attribute off the record as-is. A column type overrides this (rather than renderContent) to format that value (e.g. a date column formatting a Date) while still being reachable by a caller-supplied render that wants the type's default formatting for a value it computed itself.

Resolve the display content for a record (string / node / dolla descriptor).

Resize sub-track i to size, taking the difference from its right neighbor so the column's total width is unchanged (redistribute within the column). Both are clamped to min. Materializes explicit widths from the current sizes first, so it works on default-split columns too. No-op without a right neighbor.

Resolve the record this column reads/writes from the row's record. With a record resolver a cell can edit a sub-record (e.g. a row TIM → its Trait) while the row stays the row record. Returns the row record unchanged when no resolver is set. May return a Promise (resolvers are often async); callers await as needed.

Set the column width, rescaling explicit widths proportionally so a resize of a multi-track column keeps its sub-track ratios. Default-split columns read width live, so setting it is enough.

Total px width the grid geometry sizes this column at (sum of its tracks).

The px sizes of the tracks this column contributes to the grid template: colspan tracks that sum to the column's width. Explicit widths win; otherwise the width is split evenly. Single-track columns yield [width].

Resolve the copy/serialized value for a record. Usually a string, but a column may instead return a MIME map (e.g. { 'text/plain': 'Ben Ehmke', 'text/html': '<span data-id="…">Ben Ehmke</span>' }) to carry a richer representation for copy/paste — see Spreadsheet#copyCells. A bare string is treated as { 'text/plain': value }.