Skip to content

Commit 414f6a2

Browse files
committed
Add helpers
1 parent 898ce70 commit 414f6a2

File tree

2 files changed

+44
-10
lines changed

2 files changed

+44
-10
lines changed

src/Views/Traits/Configuration/ColumnConfiguration.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,16 @@ public function secondaryHeader($callback = null): self
173173
return $this;
174174
}
175175

176+
// TODO: Test
177+
public function secondaryHeaderFilter(string $filterKey): self
178+
{
179+
$this->secondaryHeader = true;
180+
181+
$this->secondaryHeaderCallback = $filterKey;
182+
183+
return $this;
184+
}
185+
176186
/**
177187
* @param string $field
178188
*
@@ -187,6 +197,16 @@ public function footer($callback = null): self
187197
return $this;
188198
}
189199

200+
// TODO: Test
201+
public function footerFilter(string $filterKey): self
202+
{
203+
$this->footer = true;
204+
205+
$this->footerCallback = $filterKey;
206+
207+
return $this;
208+
}
209+
190210
/**
191211
* @return $this
192212
*/

src/Views/Traits/Helpers/ColumnHelpers.php

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -452,18 +452,25 @@ public function getSecondaryHeaderCallback()
452452
public function getSecondaryHeaderContents($rows)
453453
{
454454
$value = null;
455+
$callback = $this->getSecondaryHeaderCallback();
455456

456457
if ($this->hasSecondaryHeaderCallback()) {
457-
if (is_callable($this->getSecondaryHeaderCallback())) {
458-
$value = call_user_func($this->getSecondaryHeaderCallback(), $rows);
458+
if (is_callable($callback)) {
459+
$value = call_user_func($callback, $rows);
459460

460461
if ($this->isHtml()) {
461462
return new HtmlString($value);
462463
}
463-
} elseif ($this->getSecondaryHeaderCallback() instanceof Filter) {
464-
return $this->getSecondaryHeaderCallback()->render($this->getComponent());
464+
} elseif ($callback instanceof Filter) {
465+
return $callback->render($this->getComponent());
466+
} elseif (is_string($callback)) {
467+
$filter = $this->getComponent()->getFilterByKey($callback);
468+
469+
if ($filter instanceof Filter) {
470+
return $filter->render($this->getComponent());
471+
}
465472
} else {
466-
throw new DataTableConfigurationException('The secondary header callback must be a closure or a filter object.');
473+
throw new DataTableConfigurationException('The secondary header callback must be a closure, filter object, or filter key if using secondaryHeaderFilter().');
467474
}
468475
}
469476

@@ -500,18 +507,25 @@ public function getFooterCallback()
500507
public function getFooterContents($rows)
501508
{
502509
$value = null;
510+
$callback = $this->getFooterCallback();
503511

504512
if ($this->hasFooterCallback()) {
505-
if (is_callable($this->getFooterCallback())) {
506-
$value = call_user_func($this->getFooterCallback(), $rows);
513+
if (is_callable($callback)) {
514+
$value = call_user_func($callback, $rows);
507515

508516
if ($this->isHtml()) {
509517
return new HtmlString($value);
510518
}
511-
} elseif ($this->getFooterCallback() instanceof Filter) {
512-
return $this->getFooterCallback()->render($this->getComponent());
519+
} elseif ($callback instanceof Filter) {
520+
return $callback->render($this->getComponent());
521+
} elseif (is_string($callback)) {
522+
$filter = $this->getComponent()->getFilterByKey($callback);
523+
524+
if ($filter instanceof Filter) {
525+
return $filter->render($this->getComponent());
526+
}
513527
} else {
514-
throw new DataTableConfigurationException('The footer callback must be a closure or a filter object.');
528+
throw new DataTableConfigurationException('The footer callback must be a closure, filter object, or filter key if using footerFilter().');
515529
}
516530
}
517531

0 commit comments

Comments
 (0)