Files
filament/packages/forms/src/Components/Textarea.php
T
2025-07-11 10:38:12 +02:00

96 lines
2.4 KiB
PHP

<?php
namespace Filament\Forms\Components;
use Closure;
use Filament\Forms\Components\Concerns\CanDisableGrammarly;
use Filament\Schemas\Components\Concerns\CanStripCharactersFromState;
use Filament\Schemas\Components\Concerns\CanTrimState;
use Filament\Support\Concerns\HasExtraAlpineAttributes;
class Textarea extends Field implements Contracts\CanBeLengthConstrained
{
use CanDisableGrammarly;
use CanStripCharactersFromState;
use CanTrimState;
use Concerns\CanBeAutocompleted;
use Concerns\CanBeLengthConstrained;
use Concerns\CanBeReadOnly;
use Concerns\HasExtraInputAttributes;
use Concerns\HasPlaceholder;
use HasExtraAlpineAttributes;
/**
* @var view-string
*/
protected string $view = 'filament-forms::components.textarea';
protected int | Closure | null $cols = null;
protected int | Closure | null $rows = null;
protected bool | Closure $shouldAutosize = false;
public function autosize(bool | Closure $condition = true): static
{
$this->shouldAutosize = $condition;
return $this;
}
public function cols(int | Closure | null $cols): static
{
$this->cols = $cols;
return $this;
}
public function rows(int | Closure | null $rows): static
{
$this->rows = $rows;
return $this;
}
public function getCols(): ?int
{
return $this->evaluate($this->cols);
}
public function getRows(): ?int
{
return $this->evaluate($this->rows);
}
public function shouldAutosize(): bool
{
return (bool) $this->evaluate($this->shouldAutosize);
}
public function mutateDehydratedState(mixed $state): mixed
{
$state = $this->stripCharactersFromState($state);
$state = $this->trimState($state);
return parent::mutateDehydratedState($state);
}
public function mutateStateForValidation(mixed $state): mixed
{
$state = $this->stripCharactersFromState($state);
$state = $this->trimState($state);
return parent::mutateStateForValidation($state);
}
public function mutatesDehydratedState(): bool
{
return parent::mutatesDehydratedState() || $this->hasStripCharacters() || $this->isTrimmed();
}
public function mutatesStateForValidation(): bool
{
return parent::mutatesStateForValidation() || $this->hasStripCharacters() || $this->isTrimmed();
}
}