. */ namespace SP\Html\Assets; use function SP\__; /** * Class DataGridIconBase para crear los iconos de la matriz */ abstract class IconBase implements IconInterface { /** * Clases CSS del icono */ protected ?array $class = null; public function __construct( protected string $icon, string|array|null $class = null, protected ?string $title = null ) { if ($class) { $this->setClass($class); } } private function setClass(string|array $class): void { if (is_array($class)) { $this->class = $class; } else { $this->class[] = $class; } } public function getTitle(): ?string { if ($this->title) { return __($this->title); } return null; } public function getClass(): ?string { if ($this->class) { return implode(' ', $this->class); } return null; } public function getIcon(): string { return $this->icon; } public function mutate(?string $icon = null, string|array|null $class = null, ?string $title = null): IconInterface { $clone = clone $this; if ($icon) { $clone->icon = $icon; } if ($class) { $clone->setClass($class); } if ($title) { $clone->title = $title; } return $clone; } }