Skip to content

Commit 1c4f675

Browse files
committed
adds ->linkTo method to Column.php
1 parent 955bf4f commit 1c4f675

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/Views/Column.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Rappasoft\LaravelLivewireTables\Views;
44

5+
use Illuminate\Support\HtmlString;
56
use Illuminate\Support\Str;
67

78
/**
@@ -79,6 +80,16 @@ class Column
7980
*/
8081
public bool $selected = false;
8182

83+
/**
84+
* @var
85+
*/
86+
public $linkCallback;
87+
88+
/**
89+
* @var string
90+
*/
91+
public string $linkTarget;
92+
8293
/**
8394
* Column constructor.
8495
*
@@ -268,6 +279,14 @@ public function formatted($row, $column = null)
268279
$value = call_user_func($this->formatCallback, $value, $column, $row);
269280
}
270281

282+
if ($this->linkCallback) {
283+
$url = call_user_func($this->linkCallback, $value, $column, $row);
284+
if ($url) {
285+
$linkTarget = $this->linkTarget ? "target='$this->linkTarget'" : '';
286+
$value = new HtmlString("<a href='$url' $linkTarget>$value</a>");
287+
}
288+
}
289+
271290
return $value;
272291
}
273292

@@ -358,4 +377,17 @@ public function isSelected(): bool
358377
{
359378
return $this->selected;
360379
}
380+
381+
/**
382+
* @param callable $callable
383+
* @param ?string $target
384+
*
385+
* @return $this
386+
*/
387+
public function linkTo(callable $callable, string $target = null): self
388+
{
389+
$this->linkCallback = $callable;
390+
$this->linkTarget = $target;
391+
return $this;
392+
}
361393
}

0 commit comments

Comments
 (0)