Skip to content

Commit 9179a0c

Browse files
committed
Fix keys plugin with tests
1 parent ffbd25d commit 9179a0c

File tree

3 files changed

+68
-15
lines changed

3 files changed

+68
-15
lines changed

src/Html/Options/Plugins/FixedHeader.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ public function fixedHeader(bool|array $value = true): static
3838
$this->attributes['fixedHeader'] = $value;
3939
}
4040

41-
4241
return $this;
4342
}
4443

src/Html/Options/Plugins/KeyTable.php

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

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

4044
/**
@@ -148,11 +152,11 @@ public function keysFocus(string $value): static
148152
/**
149153
* Set key's keys option value.
150154
*
151-
* @param array|string $value
155+
* @param array|null $value
152156
* @return $this
153157
* @see https://datatables.net/reference/option/keys.keys
154158
*/
155-
public function keysKeys(array|string $value): static
159+
public function keysKeys(array $value = null): static
156160
{
157161
return $this->keys(['keys' => $value]);
158162
}
@@ -168,4 +172,17 @@ public function keysTabIndex(int $value): static
168172
{
169173
return $this->keys(['tabIndex' => $value]);
170174
}
175+
176+
/**
177+
* @param string|null $key
178+
* @return mixed
179+
*/
180+
public function getKeys(string $key = null): mixed
181+
{
182+
if (is_null($key)) {
183+
return $this->attributes['keys'] ?? true;
184+
}
185+
186+
return $this->attributes['keys'][$key] ?? false;
187+
}
171188
}

tests/BuilderOptionsPluginsTest.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,42 @@ public function it_has_fixed_header_plugin()
121121
$this->assertEquals(0, $builder->getFixedHeader('headerOffset'));
122122
}
123123

124+
/** @test */
125+
public function it_has_keys_plugin()
126+
{
127+
128+
$builder = $this->getHtmlBuilder();
129+
$builder->keys();
130+
131+
$this->assertTrue($builder->getAttribute('keys'));
132+
$this->assertTrue($builder->getKeys());
133+
134+
$builder->keysBlurable()
135+
->keysClassName()
136+
->keysClipboard()
137+
->keysClipboardOrthogonal()
138+
->keysColumns('name')
139+
->keysEditAutoSelect()
140+
->keysEditOnFocus()
141+
->keysEditor('editor')
142+
->keysEditorKeys()
143+
->keysFocus(':eq(0)')
144+
->keysKeys(["charCodeAt(0)"])
145+
->keysTabIndex(1);
146+
147+
$this->assertEquals(true, $builder->getKeys('blurable'));
148+
$this->assertEquals('focus', $builder->getKeys('className'));
149+
$this->assertEquals(true, $builder->getKeys('clipboard'));
150+
$this->assertEquals('display', $builder->getKeys('clipboardOrthogonal'));
151+
$this->assertEquals('name', $builder->getKeys('columns'));
152+
$this->assertEquals(true, $builder->getKeys('editAutoSelect'));
153+
$this->assertEquals(true, $builder->getKeys('editOnFocus'));
154+
$this->assertEquals('editor', $builder->getKeys('editor'));
155+
$this->assertEquals('navigation-only', $builder->getKeys('editorKeys'));
156+
$this->assertEquals(':eq(0)', $builder->getKeys('focus'));
157+
$this->assertEquals(["charCodeAt(0)"], $builder->getKeys('keys'));
158+
$this->assertEquals(1, $builder->getKeys('tabIndex'));
159+
}
160+
124161

125162
}

0 commit comments

Comments
 (0)