UNPKG

@tanstack/table-core

Version:

Headless UI for building powerful tables & datagrids for TS/JS.

69 lines (43 loc) 2.22 kB
--- name: column-sizing description: > Use columnSizingFeature numeric size, minSize, maxSize, getSize, getStart, getAfter, and total-size APIs in table, grid, or flex CSS. Load for auto or percentage misconceptions and sizing/pinning layout mismatch. metadata: { type: sub-skill, library: '@tanstack/table-core', library_version: '9.0.0' } requires: ['core', 'table-features'] sources: - 'TanStack/table:docs/framework/react/guide/column-sizing.md' - 'TanStack/table:packages/table-core/src/features/column-sizing' - 'TanStack/table:examples/react/column-sizing' --- This skill builds on `core` and `table-features`. Sizing is numeric state; translating it to layout is a renderer decision. ## Setup ```ts import { columnSizingFeature, tableFeatures } from '@tanstack/table-core' export const features = tableFeatures({ columnSizingFeature }) export const defaultColumn = { size: 180, minSize: 80, maxSize: 480 } ``` ## Core Patterns ```ts cell.style.width = `${cell.column.getSize()}px` tableElement.style.width = `${table.getTotalSize()}px` ``` Apply the same model sizes consistently to headers, cells, and pinned offsets. ## Common Mistakes ### [HIGH] Expecting state to style DOM Wrong: `const options = { defaultColumn: { size: 180 } }` Correct: `cell.style.width = `${cell.column.getSize()}px`` Numeric state does not apply CSS to headless markup. Source: `docs/framework/react/guide/column-sizing.md#column-size-apis` ### [HIGH] Passing CSS sizes into numeric APIs Wrong: `const column = { size: '25%' }` Correct: `const column = { size: 240 }` Table sizing state is numeric; percentages and auto layout belong in renderer CSS. Source: `packages/table-core/src/features/column-sizing/columnSizingFeature.types.ts` ### [HIGH] Letting content override offsets Wrong: `cell.style.minWidth = 'max-content'` Correct: `cell.style.width = `${column.getSize()}px`; cell.style.overflow = 'hidden'` If rendered width differs from the model, totals and pinning offsets no longer match geometry. Source: `examples/react/column-sizing/src/main.tsx` ## API Discovery Inspect `node_modules/@tanstack/table-core/dist/features/column-sizing/` for defaults and region-aware offset signatures.