Columns

Configure column definitions, resizing, drag state, and column snapshots.

Columns are configured with ColumnDef[].

Column Definitions

columns.ts
const columns: ColumnDef[] = [
{ field: 'id', header: 'ID', width: 80, minWidth: 60, sortable: true },
{ field: 'name', header: 'Name', width: 220, resizable: true, reorderable: true },
{ field: 'status', header: 'Status', width: 140, filterable: true },
];

Resize API

resize.ts
grid.columns.resize(1, 260);
grid.columns.autoFit(1);
grid.columns.autoFitAll();
grid.columns.setConstraints(1, { minWidth: 160, maxWidth: 360 });

Column State

column-state.ts
const state = grid.columns.getState();
localStorage.setItem('columns', JSON.stringify(state));
const saved = localStorage.getItem('columns');
if (saved) {
grid.columns.applyState(JSON.parse(saved), {
applyWidth: true,
applyOrder: true,
applyVisibility: true,
});
}

Events

column-events.ts
grid.on('column:resize', ({ column, oldWidth, newWidth }) => {
console.log({ column, oldWidth, newWidth });
});
grid.on('column:move', ({ column, oldIndex, newIndex }) => {
console.log({ column, oldIndex, newIndex });
});
grid.on('column:dragStart', ({ columnId, columnIndex }) => {
console.log({ columnId, columnIndex });
});
grid.on('column:dragEnd', ({ columnId, fromIndex, toIndex }) => {
console.log({ columnId, fromIndex, toIndex });
});
Info

Column dragging and resizing are enabled through grid options and the built-in column plugin. Use grid.columns for programmatic operations.