File: /home/posscale/www/printmanager/vendor/filament/infolists/src/Components/Concerns/CanBeHidden.php
<?php
namespace Filament\Infolists\Components\Concerns;
use Closure;
use Filament\Infolists\Components\Component;
trait CanBeHidden
{
protected bool | Closure $isHidden = false;
protected bool | Closure $isVisible = true;
public function hidden(bool | Closure $condition = true): static
{
$this->isHidden = $condition;
return $this;
}
public function hiddenWhenAllChildComponentsHidden(): static
{
$this->hidden(static function (Component $component): bool {
foreach ($component->getChildComponentContainers() as $childComponentContainer) {
foreach ($childComponentContainer->getComponents(withHidden: false) as $childComponent) {
return false;
}
}
return true;
});
return $this;
}
public function visible(bool | Closure $condition = true): static
{
$this->isVisible = $condition;
return $this;
}
public function isHidden(): bool
{
if ($this->evaluate($this->isHidden)) {
return true;
}
return ! $this->evaluate($this->isVisible);
}
public function isVisible(): bool
{
return ! $this->isHidden();
}
}