showInSelect = $this->title !== null; } public static function make(string $name, ?string $title = null): static { return new static($name, $title); } public function setTable(TableComponent $table): void { $this->table = $table; } public function getTitle(): string { return $this->title; } private function defaultSlot(Model $row): string { return (string) $row->{$this->name}; } public function slot(callable $fn) : static { $this->slotFn = Closure::fromCallable($fn); return $this; } public function sortable(callable $fn) : static { $this->sortFn = Closure::fromCallable($fn); return $this; } public function colClass(string $v) : static { $this->colClass = $v; return $this; } public function getColClass() : ?string { return $this->colClass; } public function tdAttributes(callable $fn) : static { $this->tdAttributesFn = Closure::fromCallable($fn); return $this; } public function showInSelect($show = true): static { $this->showInSelect = $show; return $this; } public function getShowInSelect(): bool { return $this->showInSelect; } protected function getContent(Model $row): string { return $this->slotFn?->call($this, $row, $this) ?? $this->defaultSlot($row); } public function view(Model $row): HtmlString { $attributes = $this->tdAttributesFn?->call($this, $row) ?? []; $attributes = (new ComponentAttributeBag($attributes))->toHtml(); $content = $this->getContent($row); return new HtmlString("