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
oboolean
, Filament puede detectarlo y no necesitas usarboolean()
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()
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.