Skip to content

Commit cb5bffe

Browse files
committed
Fix scroller plugin with tests
1 parent aa607b6 commit cb5bffe

File tree

2 files changed

+50
-13
lines changed

2 files changed

+50
-13
lines changed

src/Html/Options/Plugins/Scroller.php

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,33 @@
1212
trait Scroller
1313
{
1414
/**
15-
* Set scroller option value.
15+
* Set scroller boundaryScale option value.
1616
*
17-
* @param bool|array $value
17+
* @param float $value
1818
* @return $this
19-
* @see https://datatables.net/reference/option/scroller
19+
* @see https://datatables.net/reference/option/scroller.boundaryScale
2020
*/
21-
public function scroller(bool|array $value = true): static
21+
public function scrollerBoundaryScale(float $value = 0.5): static
2222
{
23-
$this->attributes['scroller'] = $value;
24-
25-
return $this;
23+
return $this->scroller(['boundaryScale' => $value]);
2624
}
2725

2826
/**
29-
* Set scroller boundaryScale option value.
27+
* Set scroller option value.
3028
*
31-
* @param float $value
29+
* @param bool|array $value
3230
* @return $this
33-
* @see https://datatables.net/reference/option/scroller.boundaryScale
31+
* @see https://datatables.net/reference/option/scroller
3432
*/
35-
public function scrollerBoundaryScale(float $value = 0.5): static
33+
public function scroller(bool|array $value = true): static
3634
{
37-
return $this->scroller(['boundaryScale' => $value]);
35+
if (is_array($value)) {
36+
$this->attributes['scroller'] = array_merge((array) $this->attributes['scroller'], $value);
37+
} else {
38+
$this->attributes['scroller'] = $value;
39+
}
40+
41+
return $this;
3842
}
3943

4044
/**
@@ -84,4 +88,17 @@ public function scrollerServerWait(int $value = 200): static
8488
{
8589
return $this->scroller(['serverWait' => $value]);
8690
}
91+
92+
/**
93+
* @param string|null $key
94+
* @return mixed
95+
*/
96+
public function getScroller(string $key = null): mixed
97+
{
98+
if (is_null($key)) {
99+
return $this->attributes['scroller'] ?? true;
100+
}
101+
102+
return $this->attributes['scroller'][$key] ?? false;
103+
}
87104
}

tests/BuilderOptionsPluginsTest.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,28 @@ public function it_has_row_reorder_plugin()
231231
$this->assertEquals('td:first-child', $builder->getRowReorder('selector'));
232232
$this->assertEquals(true, $builder->getRowReorder('snapX'));
233233
$this->assertEquals(true, $builder->getRowReorder('update'));
234+
}
234235

235-
236+
/** @test */
237+
public function it_has_scroller_plugin()
238+
{
239+
$builder = $this->getHtmlBuilder();
240+
$builder->scroller();
241+
242+
$this->assertTrue($builder->getAttribute('scroller'));
243+
$this->assertTrue($builder->getScroller());
244+
245+
$builder->scrollerBoundaryScale()
246+
->scrollerDisplayBuffer()
247+
->scrollerLoadingIndicator()
248+
->scrollerRowHeight()
249+
->scrollerServerWait();
250+
251+
$this->assertEquals(0.5, $builder->getScroller('boundaryScale'));
252+
$this->assertEquals(9, $builder->getScroller('displayBuffer'));
253+
$this->assertEquals(true, $builder->getScroller('loadingIndicator'));
254+
$this->assertEquals('auto', $builder->getScroller('rowHeight'));
255+
$this->assertEquals(200, $builder->getScroller('serverWait'));
236256
}
237257

238258

0 commit comments

Comments
 (0)