From 872ac10e7e0cc63f1b8b01147c27cd0b4981c151 Mon Sep 17 00:00:00 2001 From: Arman Date: Sat, 26 Sep 2026 00:32:08 +0400 Subject: [PATCH 1/4] Add GitHub Sponsors button to README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f05451ee..9e055eea 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Build searchable, sortable, filterable and editable admin tables with Laravel, Livewire and Tailwind CSS. +[![Sponsor arm092](https://img.shields.io/badge/Sponsor-arm092-ea4aaa?style=for-the-badge&logo=githubsponsors)](https://github.com/sponsors/arm092) + ![Livewire Datatables with the default Apricode theme](resources/images/screenshot.png) [![Latest Version](https://img.shields.io/packagist/v/arm092/livewire-datatables.svg?style=for-the-badge)](https://packagist.org/packages/arm092/livewire-datatables) From 1f4842e12c717c1127232b5a62fc3b418a228b82 Mon Sep 17 00:00:00 2001 From: Arman Date: Sat, 26 Sep 2026 00:53:38 +0400 Subject: [PATCH 2/4] Support Livewire 4.4 exception responses in tests --- tests/LivewireDatatableSecurityTest.php | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/tests/LivewireDatatableSecurityTest.php b/tests/LivewireDatatableSecurityTest.php index c6c7faa0..a977f167 100644 --- a/tests/LivewireDatatableSecurityTest.php +++ b/tests/LivewireDatatableSecurityTest.php @@ -39,10 +39,10 @@ public function it_updates_only_configured_editable_columns_inside_the_builder_s $this->assertSame('Updated', $allowed->fresh()->subject); - $this->expectException(ModelNotFoundException::class); - - Livewire::test(SecureDummyTable::class) - ->call('edited', 'Not allowed', 1, $excluded->getKey()); + $this->assertModelNotFound(function () use ($excluded) { + return Livewire::test(SecureDummyTable::class) + ->call('edited', 'Not allowed', 1, $excluded->getKey()); + }); } #[Test] @@ -50,10 +50,10 @@ public function it_deletes_only_records_inside_the_builder_scope(): void { $excluded = factory(DummyModel::class)->create(['category' => 'excluded']); - $this->expectException(ModelNotFoundException::class); - - Livewire::test(SecureDummyTable::class) - ->call('delete', $excluded->getKey()); + $this->assertModelNotFound(function () use ($excluded) { + return Livewire::test(SecureDummyTable::class) + ->call('delete', $excluded->getKey()); + }); } #[Test] @@ -103,4 +103,13 @@ public function it_exports_formula_like_strings_as_text(): void $this->assertSame(DataType::TYPE_STRING, $cell->getDataType()); $this->assertSame('=HYPERLINK("https://example.test")', $cell->getValue()); } + + private function assertModelNotFound(callable $callback): void + { + try { + $callback()->assertStatus(404); + } catch (ModelNotFoundException) { + $this->addToAssertionCount(1); + } + } } From bb5b2176e3d1aad77521577740ae05cbfbccc022 Mon Sep 17 00:00:00 2001 From: Arman Date: Sat, 26 Sep 2026 00:53:39 +0400 Subject: [PATCH 3/4] Polish filter and toolbar interactions --- resources/views/icons/columns.blade.php | 3 ++ .../livewire/datatables/datatable.blade.php | 13 ++++--- .../datatables/filters/select.blade.php | 6 ++-- .../hide-column-multiselect.blade.php | 3 +- .../views/livewire/datatables/theme.blade.php | 34 ++++++++++++++----- src/LivewireDatatablesServiceProvider.php | 1 + 6 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 resources/views/icons/columns.blade.php diff --git a/resources/views/icons/columns.blade.php b/resources/views/icons/columns.blade.php new file mode 100644 index 00000000..9ce6b863 --- /dev/null +++ b/resources/views/icons/columns.blade.php @@ -0,0 +1,3 @@ +merge(['class' => 'h-5 w-5 stroke-current']) }} fill="none" viewBox="0 0 24 24" stroke="currentColor"> + + diff --git a/resources/views/livewire/datatables/datatable.blade.php b/resources/views/livewire/datatables/datatable.blade.php index 2daf0657..91fa2eb1 100644 --- a/resources/views/livewire/datatables/datatable.blade.php +++ b/resources/views/livewire/datatables/datatable.blade.php @@ -32,8 +32,9 @@ @if($this->activeFilters) - @endif @@ -67,8 +68,10 @@ class="ld-button ld-button--success flex items-center px-4 py-2 text-xs font-med
- +
@endif @@ -137,7 +140,7 @@ class="ld-button ld-button--success px-3 py-2 text-xs font-medium tracking-wider
@if($column['filterable']) @if( is_iterable($column['filterable']) ) -
+
@include('datatables::filters.select', ['index' => $index, 'name' => $column['label'], 'options' => $column['filterable']])
@else diff --git a/resources/views/livewire/datatables/filters/select.blade.php b/resources/views/livewire/datatables/filters/select.blade.php index b06b2a0a..181450f3 100644 --- a/resources/views/livewire/datatables/filters/select.blade.php +++ b/resources/views/livewire/datatables/filters/select.blade.php @@ -1,11 +1,9 @@ -
+