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
optionalindex
:
number
optional0-based column position (assigned by the grid)
width
:
number
|
string
optionalexplicit column width (px number or CSS px string); falls back to the grid's default width when omitted
colspan
:
number
optionalnumber 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
optionalexplicit 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
optionalpin this column to the left while the body scrolls
header
:
function
|
string
optionalheader content; function receives (column, grid)
render
:
function
optionalcell content renderer; receives (record, cell, column, grid)
value
:
function
optionaloptional override for the copy/serialized value; receives (record, column). Defaults to the render result.
attribute
:
string
optionalconvenience: when no render is given, read this key off the record
class
:
string
optionalextra class(es) applied to header + cells
unnest
:
function
optionalexpand 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
optionaldeprecated alias for unnest
record
:
function
optionalresolve 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
cellAt()
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 }.