Tabs

Component wrapper for Oat tabs. Pass tab labels as an array and project content panels as children.

Input / APITypeDescription
[tabs](string | NgOatTabItem)[]Tab labels (required)
activeIndex()Signal<number>Currently active tab index
tabChangeOutputEmitterFires on tab switch with index & tab
selectTab(i)methodProgrammatically select a tab

Import & Usage

typescript
import { Component } from '@angular/core';
import { NgOatTabsComponent } from '@letsprogram/ng-oat';

@Component({
  selector: 'app-example',
  imports: [NgOatTabsComponent],
  template: `
    <ng-oat-tabs
      [tabs]="['Overview', 'Features', 'Pricing']"
      (tabChange)="onTab($event)">
      <div role="tabpanel"><p>Overview content</p></div>
      <div role="tabpanel"><p>Features content</p></div>
      <div role="tabpanel"><p>Pricing content</p></div>
    </ng-oat-tabs>
  `,
})
export class ExampleComponent {
  onTab(e: { index: number }) {
    console.log('Tab:', e.index);
  }
}

String Labels

This is the Overview panel.

This is the Features panel.

This is the Pricing panel.

html
<ng-oat-tabs [tabs]="['Overview', 'Features', 'Pricing']"
             (tabChange)="onTabChange($event)">
  <div role="tabpanel"><p>Overview panel.</p></div>
  <div role="tabpanel"><p>Features panel.</p></div>
  <div role="tabpanel"><p>Pricing panel.</p></div>
</ng-oat-tabs>

Object Labels & Disabled

Dashboard content here.

Analytics content here.

Settings content here.

html
<ng-oat-tabs [tabs]="[
  { label: 'Dashboard' },
  { label: 'Analytics', disabled: true },
  { label: 'Settings' },
]">
  <div role="tabpanel">Dashboard content</div>
  <div role="tabpanel">Analytics content</div>
  <div role="tabpanel">Settings content</div>
</ng-oat-tabs>

Programmatic Selection

First panel

Second panel

Third panel

html
<ng-oat-tabs #t [tabs]="['First', 'Second', 'Third']">
  <div role="tabpanel"><p>First panel</p></div>
  <div role="tabpanel"><p>Second panel</p></div>
  <div role="tabpanel"><p>Third panel</p></div>
</ng-oat-tabs>

<button (click)="t.selectTab(0)">Go to First</button>
<button (click)="t.selectTab(2)">Go to Third</button>