File "SelectConstraint.php"
Full Path: /home/tecassol/public_html/tecas-solar.ma/vendor/filament/tables/src/Filters/QueryBuilder/Constraints/SelectConstraint.php
File size: 2.35 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Filament\Tables\Filters\QueryBuilder\Constraints;
use Closure;
use Filament\Support\Facades\FilamentIcon;
use Filament\Tables\Filters\Concerns\HasOptions;
use Filament\Tables\Filters\QueryBuilder\Constraints\Operators\IsFilledOperator;
use Filament\Tables\Filters\QueryBuilder\Constraints\SelectConstraint\Operators\IsOperator;
class SelectConstraint extends Constraint
{
use Concerns\CanBeNullable;
use HasOptions;
protected bool | Closure $isMultiple = false;
protected bool | Closure $isNative = true;
protected bool | Closure $isSearchable = false;
protected int | Closure $optionsLimit = 50;
protected ?Closure $getOptionLabelFromRecordUsing = null;
protected function setUp(): void
{
parent::setUp();
$this->icon(FilamentIcon::resolve('tables::filters.query-builder.constraints.select') ?? 'heroicon-m-chevron-up-down');
$this->operators([
IsOperator::class,
IsFilledOperator::make()
->visible(fn (): bool => $this->isNullable()),
]);
}
public function multiple(bool | Closure $condition = true): static
{
$this->isMultiple = $condition;
return $this;
}
public function searchable(bool | Closure $condition = true): static
{
$this->isSearchable = $condition;
return $this;
}
public function isMultiple(): bool
{
return (bool) $this->evaluate($this->isMultiple);
}
public function isSearchable(): bool
{
return (bool) $this->evaluate($this->isSearchable);
}
public function optionsLimit(int | Closure $limit): static
{
$this->optionsLimit = $limit;
return $this;
}
public function getOptionsLimit(): int
{
return $this->evaluate($this->optionsLimit);
}
public function native(bool | Closure $condition = true): static
{
$this->isNative = $condition;
return $this;
}
public function isNative(): bool
{
return (bool) $this->evaluate($this->isNative);
}
public function getOptionLabelFromRecordUsing(?Closure $callback): static
{
$this->getOptionLabelFromRecordUsing = $callback;
return $this;
}
public function getOptionLabelFromRecordUsingCallback(): ?Closure
{
return $this->getOptionLabelFromRecordUsing;
}
}