Saltar al contenido principal

Columna de icono

Introducción

Las columnas de icono renderizan un icono que representa el estado de la columna:

use Filament\Tables\Columns\IconColumn;
use Filament\Support\Icons\Heroicon;

IconColumn::make('status')
->icon(fn (string $state): Heroicon => match ($state) {
'draft' => Heroicon::OutlinedPencil,
'reviewing' => Heroicon::OutlinedClock,
'published' => Heroicon::OutlinedCheckCircle,
})
💡 Utility Injection

El método icon() puede inyectar varias utilidades en la función como parámetros.

Personalizar el color

Puedes cambiar el color del icono usando el método color():

use Filament\Tables\Columns\IconColumn;

IconColumn::make('status')
->color('success')

Pasando una función a color(), puedes personalizar el color dependiendo del estado de la columna:

use Filament\Tables\Columns\IconColumn;

IconColumn::make('status')
->color(fn (string $state): string => match ($state) {
'draft' => 'info',
'reviewing' => 'warning',
'published' => 'success',
default => 'gray',
})
💡 Utility Injection

El método color() puede inyectar varias utilidades en la función como parámetros.

Personalizar el tamaño

El tamaño de icono por defecto es IconSize::Large, pero puedes cambiarlo a IconSize::ExtraSmall, IconSize::Small, IconSize::Medium, IconSize::ExtraLarge o IconSize::TwoExtraLarge:

use Filament\Tables\Columns\IconColumn;
use Filament\Support\Enums\IconSize;

IconColumn::make('status')
->size(IconSize::Medium)
💡 Utility Injection

Además de aceptar valores estáticos, el método size() también admite una función para calcularlo dinámicamente. Puedes inyectar varias utilidades en la función como parámetros.

Manejar valores booleanos

Las columnas de icono pueden mostrar un ícono de check o “X” dependiendo del estado de la columna (true o false), usando el método boolean():

use Filament\Tables\Columns\IconColumn;

IconColumn::make('is_featured')
->boolean()

Si este atributo en la clase del modelo ya está casteado como bool o boolean, Filament puede detectarlo y no necesitas usar boolean() manualmente.

Opcionalmente, puedes pasar un valor booleano para controlar si el icono debe interpretarse como booleano:

use Filament\Tables\Columns\IconColumn;

IconColumn::make('is_featured')
->boolean(FeatureFlag::active())
💡 Utility Injection

Además de aceptar valores estáticos, el método boolean() también admite una función para calcularlo dinámicamente. Puedes inyectar varias utilidades en la función como parámetros.

Personalizar los iconos booleanos

Puedes personalizar el icono que representa cada estado:

use Filament\Tables\Columns\IconColumn;
use Filament\Support\Icons\Heroicon;

IconColumn::make('is_featured')
->boolean()
->trueIcon(Heroicon::OutlinedCheckBadge)
->falseIcon(Heroicon::OutlinedXMark)
💡 Utility Injection

Además de aceptar valores estáticos, los métodos trueIcon() y falseIcon() también aceptan funciones para calcularlos dinámicamente. Puedes inyectar varias utilidades en las funciones como parámetros.

Personalizar los colores booleanos

Puedes personalizar el color del icono que representa cada estado:

use Filament\Tables\Columns\IconColumn;

IconColumn::make('is_featured')
->boolean()
->trueColor('info')
->falseColor('warning')
💡 Utility Injection

Además de aceptar valores estáticos, los métodos trueColor() y falseColor() también aceptan funciones para calcularlos dinámicamente. Puedes inyectar varias utilidades en las funciones como parámetros.

Agrupar múltiples iconos

Cuando se muestran varios iconos, pueden configurarse para que se ajusten (wrap()) en caso de no caber en una sola línea:

use Filament\Tables\Columns\IconColumn;

IconColumn::make('icon')
->wrap()
tip

El "ancho" para que se haga el ajuste depende de la etiqueta de la columna, así que puede que necesites usar una etiqueta más corta u oculta para que se ajuste más estrechamente.