Skip to content

Commit 15bbdac

Browse files
committed
Merge branch 'def-studio-add-linkto-cell-property' into develop
# Conflicts: # src/Views/Column.php
2 parents 3f2b8f8 + 7d8e32e commit 15bbdac

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/Views/Column.php

Lines changed: 34 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
/**
@@ -89,6 +90,16 @@ class Column
8990
*/
9091
public $footerCallback;
9192

93+
/**
94+
* @var
95+
*/
96+
public $linkCallback;
97+
98+
/**
99+
* @var ?string
100+
*/
101+
public ?string $linkTarget;
102+
92103
/**
93104
* Column constructor.
94105
*
@@ -286,6 +297,15 @@ public function formatted($row, $column = null)
286297
$value = call_user_func($this->formatCallback, $value, $column, $row);
287298
}
288299

300+
if ($this->linkCallback) {
301+
$url = call_user_func($this->linkCallback, $value, $column, $row);
302+
303+
if ($url) {
304+
$linkTarget = $this->linkTarget ? "target='$this->linkTarget'" : '';
305+
$value = new HtmlString("<a href='$url' $linkTarget>$value</a>");
306+
}
307+
}
308+
289309
return $value;
290310
}
291311

@@ -412,4 +432,18 @@ public function footerFormatted($rows)
412432

413433
return $value;
414434
}
435+
436+
/**
437+
* @param callable $callable
438+
* @param string|null $target
439+
*
440+
* @return $this
441+
*/
442+
public function linkTo(callable $callable, string $target = null): self
443+
{
444+
$this->linkCallback = $callable;
445+
$this->linkTarget = $target;
446+
447+
return $this;
448+
}
415449
}

0 commit comments

Comments
 (0)