Skip to content

Commit ffbd25d

Browse files
committed
Fix FixedHeader.php with tests
1 parent 77aa7b5 commit ffbd25d

File tree

2 files changed

+50
-12
lines changed

2 files changed

+50
-12
lines changed

src/Html/Options/Plugins/FixedHeader.php

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

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

4045
/**
@@ -72,4 +77,17 @@ public function fixedHeaderHeaderOffset(int $value = 0): static
7277
{
7378
return $this->fixedHeader(['headerOffset' => $value]);
7479
}
80+
81+
/**
82+
* @param string|null $key
83+
* @return mixed
84+
*/
85+
public function getFixedHeader(string $key = null): mixed
86+
{
87+
if (is_null($key)) {
88+
return $this->attributes['fixedHeader'] ?? true;
89+
}
90+
91+
return $this->attributes['fixedHeader'][$key] ?? false;
92+
}
7593
}

tests/BuilderOptionsPluginsTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,25 @@ public function it_has_fixed_columns_plugin()
101101
$this->assertEquals(0, $builder->getFixedColumns('rightColumns'));
102102
}
103103

104+
/** @test */
105+
public function it_has_fixed_header_plugin()
106+
{
107+
$builder = $this->getHtmlBuilder();
108+
$builder->fixedHeader();
109+
110+
$this->assertTrue($builder->getAttribute('fixedHeader'));
111+
$this->assertTrue($builder->getFixedHeader());
112+
113+
$builder->fixedHeaderFooter()
114+
->fixedHeaderFooterOffset()
115+
->fixedHeaderHeader()
116+
->fixedHeaderHeaderOffset();
117+
118+
$this->assertEquals(true, $builder->getFixedHeader('footer'));
119+
$this->assertEquals(0, $builder->getFixedHeader('offset'));
120+
$this->assertEquals(true, $builder->getFixedHeader('header'));
121+
$this->assertEquals(0, $builder->getFixedHeader('headerOffset'));
122+
}
123+
104124

105125
}

0 commit comments

Comments
 (0)