Skip to content

[인포리스트.레이아웃] Tabs

개요

일부 인포리스트는 길고 복잡할 수 있습니다. 한 번에 표시되는 컴포넌트의 수를 줄이기 위해 탭을 사용할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Tab 1')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 2')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 3')
            ->schema([
                // ...
            ]),
    ])
탭

기본 활성 탭 설정하기

첫 번째 탭이 기본적으로 열려 있습니다. activeTab() 메서드를 사용하여 기본으로 열리는 탭을 변경할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Tab 1')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 2')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 3')
            ->schema([
                // ...
            ]),
    ])
    ->activeTab(2)

탭 아이콘 설정하기

탭에는 아이콘을 사용할 수 있으며, icon() 메서드를 사용하여 설정할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Notifications')
            ->icon('heroicon-m-bell')
            ->schema([
                // ...
            ]),
        // ...
    ])
아이콘이 있는 탭

탭 아이콘 위치 설정하기

iconPosition() 메서드를 사용하여 탭의 아이콘을 라벨 앞이나 뒤에 배치할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;
use Filament\Support\Enums\IconPosition;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Notifications')
            ->icon('heroicon-m-bell')
            ->iconPosition(IconPosition::After)
            ->schema([
                // ...
            ]),
        // ...
    ])
라벨 뒤에 아이콘이 있는 탭

탭 배지 설정하기

탭에는 배지를 사용할 수 있으며, badge() 메서드를 사용하여 설정할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Notifications')
            ->badge(5)
            ->schema([
                // ...
            ]),
        // ...
    ])
배지가 있는 탭

배지의 색상을 변경하고 싶다면 badgeColor() 메서드를 사용할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Notifications')
            ->badge(5)
            ->badgeColor('success')
            ->schema([
                // ...
            ]),
        // ...
    ])

탭 내에서 그리드 컬럼 사용하기

탭 내에서 그리드를 커스터마이즈하려면 columns() 메서드를 사용할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Tab 1')
            ->schema([
                // ...
            ])
            ->columns(3),
        // ...
    ])

스타일이 적용된 컨테이너 제거하기

기본적으로 탭과 그 내용은 카드로 스타일링된 컨테이너에 감싸져 있습니다. contained()를 사용하여 스타일이 적용된 컨테이너를 제거할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Tab 1')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 2')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 3')
            ->schema([
                // ...
            ]),
    ])
    ->contained(false)

현재 탭 상태 유지하기

기본적으로 현재 탭은 브라우저의 로컬 스토리지에 저장되지 않습니다. persistTab() 메서드를 사용하여 이 동작을 변경할 수 있습니다. 또한 앱 내의 다른 탭 세트와 구분하기 위해 탭 컴포넌트에 고유한 id()를 전달해야 합니다. 이 ID는 로컬 스토리지에서 현재 탭을 저장하는 키로 사용됩니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        // ...
    ])
    ->persistTab()
    ->id('order-tabs')

URL 쿼리 문자열에 현재 탭 상태 유지하기

기본적으로 현재 탭은 URL의 쿼리 문자열에 저장되지 않습니다. persistTabInQueryString() 메서드를 사용하여 이 동작을 변경할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Tab 1')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 2')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 3')
            ->schema([
                // ...
            ]),
    ])
    ->persistTabInQueryString()

기본적으로 현재 탭은 tab 키를 사용하여 URL의 쿼리 문자열에 저장됩니다. 이 키는 persistTabInQueryString() 메서드에 전달하여 변경할 수 있습니다:

php
use Filament\Infolists\Components\Tabs;

Tabs::make('Tabs')
    ->tabs([
        Tabs\Tab::make('Tab 1')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 2')
            ->schema([
                // ...
            ]),
        Tabs\Tab::make('Tab 3')
            ->schema([
                // ...
            ]),
    ])
    ->persistTabInQueryString('settings-tab')

나를 위한 문서 한글화