Skip to content

Commit 3de8322

Browse files
committed
Fix select2 paginated results and ajax setter
1 parent b424731 commit 3de8322

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/Html/Editor/Fields/Select2.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,13 @@ public function optsPlaceholder(string $text = '', string $id = ''): static
5050
*/
5151
public function ajax(array|string $value): static
5252
{
53+
$ajax = $this->opts['ajax'] ?? [];
54+
5355
if (is_array($value)) {
54-
return $this->opts(['ajax' => $value]);
56+
return $this->opts(['ajax' => array_merge($ajax, $value)]);
5557
}
5658

57-
return $this->opts(['ajax' => ['url' => $value]]);
59+
return $this->opts(['ajax' => array_merge($ajax, ['url' => $value])]);
5860
}
5961

6062
/**
@@ -113,7 +115,7 @@ public function processPaginatedResults(string $display = 'text', string $id = '
113115
$script = 'function(data, params) { ';
114116
$script .= 'params.page = params.page || 1; ';
115117
$script .= "data.data.map(function(e) { e.text = e.$display; e.id = e.$id; return e; }); ";
116-
$script .= 'return { results: data.data, pagination: { more: data.current_page < data.last_page } };';
118+
$script .= 'return { results: data.data, pagination: { more: data.meta.current_page < data.meta.last_page } };';
117119
$script .= '}';
118120

119121
return $this->processResults($script);

tests/FieldTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,10 @@ public function it_can_create_select2_field()
194194
$this->assertEquals('fn', $field->opts['ajax']['processResults']);
195195

196196
$field->processPaginatedResults('username', 'user_id');
197+
$this->assertEquals('/url', $field->opts['ajax']['url']);
197198
$this->assertStringContainsString('e.text = e.username', $field->opts['ajax']['processResults']);
198199
$this->assertStringContainsString('e.id = e.user_id', $field->opts['ajax']['processResults']);
200+
$this->assertStringContainsString('data.meta.current_page < data.meta.last_page', $field->opts['ajax']['processResults']);
199201

200202
$field->placeholder('New Placeholder');
201203
$this->assertEquals('New Placeholder', $field->opts['placeholder']['text']);

0 commit comments

Comments
 (0)