AdaptTable for Taiga UI

Column management in Taiga UI

Everything a user expects to do to a column, without writing a column-settings panel: rename, show and hide, reorder by drag, pin to either edge, resize by drag or keyboard, and switch row density.

Pinning is logical rather than physical, so a column pinned to the start stays on the correct side in a right-to-left layout.

The arrangement is state like any other: persist it to the URL, to localStorage, or to your own server through columnLayout and onColumnLayoutChange.

The code

import { Component, input, signal } from "@angular/core";
import type { ColumnDef, ColumnLayoutState } from "@adapttable/angular";
import { AdaptDataTable } from "@adapttable/taiga-ui";
import { columnMenu } from "@adapttable/taiga-ui/column-menu";
import { resizableColumns } from "@adapttable/taiga-ui/resizable-columns";

@Component({
  selector: "app-people",
  imports: [AdaptDataTable],
  template: `
    <adapt-data-table
      [data]="rows()" [columns]="columns()" [rowKey]="rowKey"
      [features]="features" [columnLayout]="layout()"
      (columnLayoutChange)="layout.set($event)"
    />
  `,
})
export class People {
  readonly rows = input.required<readonly Person[]>();
  readonly columns = input.required<readonly ColumnDef<Person>[]>();
  readonly rowKey = (row: Person) => row.id;
  readonly layout = signal<ColumnLayoutState>({
    hidden: [], order: [], widths: {}, pinned: { name: "start" },
  });
  readonly features = [columnMenu(), resizableColumns()];
}

Install

# Follow the kit setup guide for compatible peers
pnpm add @adapttable/taiga-ui @adapttable/angular @taiga-ui/core@5.26.0 @taiga-ui/kit@5.26.0 @taiga-ui/cdk@5.26.0 @taiga-ui/i18n@5.26.0 @taiga-ui/styles@5.26.0 @taiga-ui/icons@5.26.0 @taiga-ui/event-plugins@^5 @taiga-ui/design-tokens@~0.320.0 @angular/cdk@^22 @angular/forms@^22 @angular/router@^22 rxjs@^7.8.2

The same feature in the other kits

More Taiga UI features

Reference: column-management, columns. More of this kit: AdaptTable for Taiga UI, or the live demo.