Skip to content

resolveListViewColumnConfig

resolveListViewColumnConfig<TFieldSlug>(props): ResolvedListViewColumnConfig

Defined in: packages/core/src/collections/listView/listViewColumnConfig.ts:77

Resolves ONE field’s final column config — width, sort/hide capability, pin side, and visibility — from a single three-tier precedence chain, VIEWS ALWAYS WIN (developer answer, Decision 48): the active view’s own resolved column entry for this field (resolvedColumnEntry, already the ONE entry resolveListViewQueryState’s own URL → active view → collection default chain produced — this function does not re-resolve across sources itself) ?? field.admin.<attr> (the field’s own declared default) ?? a global default (FIELD_TYPE_DEFAULT_WIDTH[fieldDef.type] for width, false for enableSorting/enableHiding — unreachable in practice since field.admin.enableSorting/.enableHiding are already always-resolved booleans, kept for type completeness only — undefined/ false for pinned/hidden, which have no field-level source at all).

The EVERY reader of a column’s effective config — the columns menu, the header’s sort affordance and resize handle, the server prerender — calls this, never re-derives any of it directly off field.admin.*.

TFieldSlug extends string = string

Input props.

AdminDataField

The field’s own resolved definition — supplies type (the FIELD_TYPE_DEFAULT_WIDTH lookup) and admin.columnWidth/ .enableSorting/.enableHiding (the middle tier).

TFieldSlug

The field’s own slug — unused in the resolution itself (every input besides fieldDef.type is already field-specific), kept for callers that want to label an error/log entry without a second lookup.

ColumnEntry<TFieldSlug> | undefined

The ONE ColumnEntry already resolved for this field by the caller’s own cols=/active-view/default chain — a bare field-slug entry (Decision 11’s back-compat shape) carries no overrides at all, equivalent to undefined here.

ResolvedListViewColumnConfig

The resolved column config.