File: /home/posscale/public_html/printmanager/vendor/filament/filament/src/Navigation/MenuItem.php
<?php
namespace Filament\Navigation;
use Closure;
use Filament\Support\Components\Component;
use Laravel\SerializableClosure\Serializers\Native;
class MenuItem extends Component
{
/**
* @var string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null
*/
protected string | array | Closure | null $color = null;
protected string | Closure | null $icon = null;
protected string | Closure | null $label = null;
protected string | Closure | null $postAction = null;
protected int | Closure | null $sort = null;
protected string | Closure | Native | null $url = null;
protected bool | Closure $shouldOpenUrlInNewTab = false;
protected bool | Closure $isHidden = false;
protected bool | Closure $isVisible = true;
final public function __construct() {}
public static function make(): static
{
$static = app(static::class);
$static->configure();
return $static;
}
/**
* @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color
*/
public function color(string | array | Closure | null $color): static
{
$this->color = $color;
return $this;
}
public function icon(string | Closure | null $icon): static
{
$this->icon = $icon;
return $this;
}
public function label(string | Closure | null $label): static
{
$this->label = $label;
return $this;
}
public function postAction(string | Closure | null $action): static
{
$this->postAction = $action;
return $this;
}
public function sort(int | Closure | null $sort): static
{
$this->sort = $sort;
return $this;
}
public function url(string | Closure | null $url, bool | Closure $shouldOpenInNewTab = false): static
{
$this->openUrlInNewTab($shouldOpenInNewTab);
$this->url = $url;
return $this;
}
public function openUrlInNewTab(bool | Closure $condition = true): static
{
$this->shouldOpenUrlInNewTab = $condition;
return $this;
}
public function hidden(bool | Closure $condition = true): static
{
$this->isHidden = $condition;
return $this;
}
public function visible(bool | Closure $condition = true): static
{
$this->isVisible = $condition;
return $this;
}
public function isVisible(): bool
{
return ! $this->isHidden();
}
public function isHidden(): bool
{
if ($this->evaluate($this->isHidden)) {
return true;
}
return ! $this->evaluate($this->isVisible);
}
/**
* @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null
*/
public function getColor(): string | array | null
{
return $this->evaluate($this->color);
}
public function getIcon(): ?string
{
return $this->evaluate($this->icon);
}
public function getLabel(): ?string
{
return $this->evaluate($this->label);
}
public function getPostAction(): ?string
{
return $this->evaluate($this->postAction);
}
public function getSort(): int
{
return $this->evaluate($this->sort) ?? -1;
}
public function getUrl(): ?string
{
return $this->evaluate($this->url);
}
public function shouldOpenUrlInNewTab(): bool
{
return (bool) $this->evaluate($this->shouldOpenUrlInNewTab);
}
}