File: /home/posscale/www/printmanager/vendor/filament/infolists/src/Components/Concerns/HasAffixes.php
<?php
namespace Filament\Infolists\Components\Concerns;
use Closure;
use Filament\Infolists\Components\Actions\Action;
use Filament\Support\Enums\ActionSize;
use Illuminate\Support\Arr;
trait HasAffixes
{
/**
* @var array<Action> | null
*/
protected ?array $cachedSuffixActions = null;
/**
* @var array<Action | Closure>
*/
protected array $suffixActions = [];
/**
* @var array<Action> | null
*/
protected ?array $cachedPrefixActions = null;
/**
* @var array<Action | Closure>
*/
protected array $prefixActions = [];
public function prefixAction(Action | Closure $action): static
{
$this->prefixActions([$action]);
return $this;
}
/**
* @param array<Action | Closure> $actions
*/
public function prefixActions(array $actions): static
{
$this->prefixActions = [
...$this->prefixActions,
...$actions,
];
return $this;
}
public function suffixAction(Action | Closure $action): static
{
$this->suffixActions([$action]);
return $this;
}
/**
* @param array<Action | Closure> $actions
*/
public function suffixActions(array $actions): static
{
$this->suffixActions = [
...$this->suffixActions,
...$actions,
];
return $this;
}
/**
* @return array<Action>
*/
public function getPrefixActions(): array
{
return $this->cachedPrefixActions ?? $this->cachePrefixActions();
}
/**
* @return array<Action>
*/
public function cachePrefixActions(): array
{
$this->cachedPrefixActions = [];
foreach ($this->prefixActions as $prefixAction) {
foreach (Arr::wrap($this->evaluate($prefixAction)) as $action) {
$this->cachedPrefixActions[$action->getName()] = $this->prepareAction(
$action
->defaultSize(ActionSize::Small)
->defaultView(Action::ICON_BUTTON_VIEW),
);
}
}
return $this->cachedPrefixActions;
}
/**
* @return array<Action>
*/
public function getSuffixActions(): array
{
return $this->cachedSuffixActions ?? $this->cacheSuffixActions();
}
/**
* @return array<Action>
*/
public function cacheSuffixActions(): array
{
$this->cachedSuffixActions = [];
foreach ($this->suffixActions as $suffixAction) {
foreach (Arr::wrap($this->evaluate($suffixAction)) as $action) {
$this->cachedSuffixActions[$action->getName()] = $this->prepareAction(
$action
->defaultSize(ActionSize::Small)
->defaultView(Action::ICON_BUTTON_VIEW),
);
}
}
return $this->cachedSuffixActions;
}
}