mirror of
https://github.com/filamentphp/filament.git
synced 2026-09-24 15:42:09 +08:00
96 lines
2.4 KiB
PHP
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();
|
|
}
|
|
}
|