Skip to content

Columnas & Formatters Visuales 🎨

En lugar de programar celdas personalizadas a mano en Vue o React para cada entidad, las columnas de warrior/schema-builder incorporan estrategias de formateo visual preconstruidas.


🧩 Catálogo de Formatters

1. Formatter de Avatar (ColumnType::AVATAR)

Renderiza un avatar visual con iniciales o foto, acompañado de título y subtítulo:

php
Column::make('user', 'Usuario')
    ->avatar(
        avatarKey: 'avatar_url',  // Clave de la URL de la imagen
        titleKey: 'full_name',    // Clave del texto principal
        subtitleKey: 'email'      // Clave del texto secundario
    )
    ->sortable();

2. Formatter de Badge (ColumnType::BADGE)

Renderiza un chip coloreado semántico según el valor de la columna:

php
Column::make('status', 'Estado')->badge([
    'active'    => 'success',
    'pending'   => 'warning',
    'suspended' => 'secondary',
    'banned'    => 'error',
]);

3. Formatter de Moneda (ColumnType::CURRENCY)

Alinea automáticamente el texto a la derecha y formatea valores monetarios mediante Intl.NumberFormat:

php
Column::make('total_amount', 'Total Facturado')
    ->currency(
        currency: 'USD',    // 'USD', 'EUR', 'PEN', 'MXN', 'COP'
        locale: 'en-US',    // Localización
        decimals: 2         // Número de decimales
    )
    ->sortable();

4. Formatter de Fecha y Hora (ColumnType::DATE / DATETIME)

Formatea fechas de forma legible respetando la zona horaria:

php
// Fecha corta
Column::make('birth_date', 'Cumpleaños')->date('DD/MM/YYYY');

// Fecha y hora completa
Column::make('created_at', 'Fecha de Registro')->datetime('DD/MM/YYYY HH:mm');

5. Formatters Adicionales

php
// Booleano: renderiza icono de check verde o cruz roja
Column::make('is_verified', 'Verificado')->boolean();

// Enlace externo clicable
Column::make('website', 'Sitio Web')->link();

// JSON: visor estructurado de objetos complejos
Column::make('metadata', 'Detalles Técnicos')->json();

📐 Propiedades de Columna

php
use Warrior\SchemaBuilder\Table\Column;
use Warrior\SchemaBuilder\Enums\Alignment;

Column::make('dni', 'Documento')
    ->sortable(true)                // Habilita ordenamiento en servidor
    ->align(Alignment::CENTER)       // START, CENTER, END
    ->width('140px')                // Ancho sugerido de columna
    ->visible(true)                 // Control de visibilidad
    ->permission('users.view_dni'); // Control de acceso RBAC

Liberado bajo la Licencia MIT.