Textarea
Introducción
El textarea te permite interactuar con una cadena de varias líneas:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
Redimensionar el textarea
Puedes cambiar el tamaño del textarea definiendo los métodos rows() y cols():
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->rows(10)
->cols(20)
Details
Inyección de utilidades
Además de permitir valores estáticos, los métodosrows() y cols() también aceptan funciones para calcularlos dinámicamente. Puedes inyectar varias utilidades en las funciones como parámetros.Autoajustar el tamaño del textarea
Puedes permitir que el textarea se ajuste automáticamente para encajar su contenido estableciendo el método autosize():
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->autosize()
Opcionalmente, puedes pasar un valor booleano para controlar si el textarea debe ser autoajustable o no:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->autosize(FeatureFlag::active())
Details
Inyección de utilidades
Además de permitir un valor estático, el métodoautosize() también acepta una función para calcularlo dinámicamente. Puedes inyectar varias utilidades en la función como parámetros.Hacer el campo de solo lectura
Para no confundirse con deshabilitar el campo, puedes hacer el campo "solo lectura" usando el método readOnly():
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->readOnly()
Hay algunas diferencias, en comparación con disabled():
- Al usar
readOnly(), el campo aún se enviará al servidor cuando se envíe el formulario. Puede ser mutado con la consola del navegador o mediante JavaScript. Puedes usardehydrated(false)para evitar esto. - No hay cambios de estilo, como menor opacidad, al usar
readOnly(). - El campo aún se puede enfocar al usar
readOnly().
Opcionalmente, puedes pasar un valor booleano para controlar si el campo debe ser de solo lectura o no:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->readOnly(FeatureFlag::active())
Details
Inyección de utilidades
Además de permitir un valor estático, el métodoreadOnly() también acepta una función para calcularlo dinámicamente. Puedes inyectar varias utilidades en la función como parámetros.Deshabilitar comprobaciones de Grammarly
Si el usuario tiene Grammarly instalado y deseas evitar que analice el contenido del textarea, puedes usar el método disableGrammarly():
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->disableGrammarly()
Opcionalmente, puedes pasar un valor booleano para controlar si el campo debe desactivar las comprobaciones de Grammarly o no:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->disableGrammarly(FeatureFlag::active())
Details
Inyección de utilidades
Además de permitir un valor estático, el métododisableGrammarly() también acepta una función para calcularlo dinámicamente. Puedes inyectar varias utilidades en la función como parámetros.Recortar espacios en blanco
Puedes recortar automáticamente los espacios en blanco del principio y el final del valor del textarea usando el método trim():
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->trim()
Puede que quieras habilitar el recorte globalmente para todos los textareas, similar al middleware TrimStrings de Laravel. Puedes hacer esto en un service provider usando el método configureUsing():
use Filament\Forms\Components\Textarea;
Textarea::configureUsing(function (Textarea $component): void {
$component->trim();
});
Validación de textarea
Además de todas las reglas listadas en la página de validación, hay reglas adicionales que son específicas para los textareas.
Validación de longitud
Puedes limitar la longitud del textarea estableciendo los métodos minLength() y maxLength(). Estos métodos agregan validación tanto en frontend como en backend:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->minLength(2)
->maxLength(1024)
También puedes especificar la longitud exacta del textarea estableciendo length(). Este método agrega validación tanto en frontend como en backend:
use Filament\Forms\Components\Textarea;
Textarea::make('question')
->length(100)
Details
Inyección de utilidades
Además de permitir valores estáticos, los métodosminLength(), maxLength() y length() también aceptan una función para calcularlos dinámicamente. Puedes inyectar varias utilidades en la función como parámetros.