Skip to content

Commit 96f9af3

Browse files
committed
Adjustments for ComponentColumn
1 parent 4761dfe commit 96f9af3

File tree

7 files changed

+96
-36
lines changed

7 files changed

+96
-36
lines changed

src/Views/Traits/Columns/HasComponentView.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,22 @@
22

33
namespace Rappasoft\LaravelLivewireTables\Views\Traits\Columns;
44

5+
use Illuminate\Support\Facades\View;
6+
57
trait HasComponentView
68
{
79
protected string $componentView;
810

911
public function component(string $component): self
1012
{
11-
$this->componentView = 'components.'.$component;
13+
if (View::exists('components.'.$component))
14+
{
15+
$this->componentView = 'components.'.$component;
16+
}
17+
elseif (View::exists($component))
18+
{
19+
$this->componentView = $component;
20+
}
1221

1322
return $this;
1423
}

tests/TestCase.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Illuminate\Support\Facades\DB;
99
use Livewire\LivewireServiceProvider;
1010
use Orchestra\Testbench\TestCase as Orchestra;
11+
use Rappasoft\LaravelLivewireTables\Tests\TestServiceProvider;
1112
use Rappasoft\LaravelLivewireTables\LaravelLivewireTablesServiceProvider;
1213
use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\{BreedsTable,PetsTable,PetsTableEvents,PetsTableUnpaginated,PetsTableWithOwner,SpeciesTable};
1314
use Rappasoft\LaravelLivewireTables\Tests\Http\TestComponent;
@@ -35,7 +36,7 @@ class TestCase extends Orchestra
3536
protected function setUp(): void
3637
{
3738
parent::setUp();
38-
39+
3940
if (! Breed::where('id', 1)->get()) {
4041
include_once __DIR__.'/../database/migrations/create_test_tables.php.stub';
4142
(new \CreateTestTables)->down();
@@ -139,6 +140,7 @@ protected function setupUnpaginatedTable()
139140
protected function getPackageProviders($app): array
140141
{
141142
return [
143+
TestServiceProvider::class,
142144
LivewireServiceProvider::class,
143145
LaravelLivewireTablesServiceProvider::class,
144146
BladeIconsServiceProvider::class,

tests/TestServiceProvider.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Tests;
4+
5+
use Illuminate\Support\ServiceProvider;
6+
use Illuminate\Support\Facades\Blade;
7+
use Rappasoft\LaravelLivewireTables\Tests\Http\Components\TestComponent;
8+
9+
class TestServiceProvider extends ServiceProvider
10+
{
11+
public function boot(): void
12+
{
13+
Blade::component('test-component', TestComponent::class);
14+
$this->loadViewsFrom(__DIR__.'/views', 'livewire-tables-test');
15+
16+
}
17+
}

tests/Unit/Views/Columns/ComponentColumnTest.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,16 @@
77
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
88
use Rappasoft\LaravelLivewireTables\Views\Column;
99
use Rappasoft\LaravelLivewireTables\Views\Columns\ComponentColumn;
10+
use Rappasoft\LaravelLivewireTables\Tests\Http\Components\TestComponent;
11+
use Illuminate\Support\Facades\Blade;
1012

1113
final class ComponentColumnTest extends TestCase
1214
{
15+
protected function setUp(): void
16+
{
17+
parent::setUp();
18+
}
19+
1320
public function test_can_set_the_column_title(): void
1421
{
1522
$column = ComponentColumn::make('Name', 'name');
@@ -34,4 +41,59 @@ public function test_can_not_be_both_collapsible_on_mobile_and_on_tablet(): void
3441
$column->getContents($row);
3542

3643
}
44+
45+
46+
public function test_can_set_custom_slot(): void
47+
{
48+
$column = ComponentColumn::make('Age 2', 'age')
49+
->attributes(fn ($value, $row, Column $column) => [
50+
'age' => $row->age,
51+
])
52+
->slot(fn ($value, $row, Column $column) => [
53+
($row->age < 2) => 'test1',
54+
($row->age > 2) => 'test2',
55+
]);
56+
$this->assertTrue($column->hasSlotCallback());
57+
}
58+
59+
60+
public function test_can_get_custom_slot(): void
61+
{
62+
63+
$column = ComponentColumn::make('Age 2', 'age')
64+
->attributes(fn ($value, $row, Column $column) => [
65+
'age' => $row->age,
66+
])
67+
->slot(fn ($value, $row, Column $column) => (($row->age < 10) ? 'youngslot' : 'oldslot'))
68+
->component('livewire-tables-test::test');
69+
70+
$pet1 = Pet::where('age', '>', 11)->first();
71+
$pet1_contents = $column->getContents($pet1);
72+
$this->assertSame('oldslot',$pet1_contents->getData()['slot']->__toString());
73+
74+
$pet2 = Pet::where('age', '<', 5)->first();
75+
$pet2_contents = $column->getContents($pet2);
76+
$this->assertSame('youngslot',$pet2_contents->getData()['slot']->__toString());
77+
78+
}
79+
80+
public function test_can_get_attributes(): void
81+
{
82+
83+
$column = ComponentColumn::make('Age 2', 'age')
84+
->attributes(fn ($value, $row, Column $column) => [
85+
'age' => $row->age,
86+
])
87+
->slot(fn ($value, $row, Column $column) => (($row->age < 10) ? 'youngslot' : 'oldslot'))
88+
->component('livewire-tables-test::test');
89+
90+
$pet1 = Pet::where('age', '>', 11)->first();
91+
$pet1_contents = $column->getContents($pet1);
92+
$this->assertSame(22, $pet1_contents->getData()['attributes']['age']);
93+
94+
$pet2 = Pet::where('age', '<', 5)->first();
95+
$pet2_contents = $column->getContents($pet2);
96+
$this->assertSame(2, $pet2_contents->getData()['attributes']['age']);
97+
98+
}
3799
}

tests/Unit/Views/Columns/ViewComponentColumnTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public function test_can_have_component_view(): void
3333
]);
3434

3535
$this->assertFalse($column->hasComponentView());
36-
$column->component('test-component');
36+
$column->component('livewire-tables-test::test');
3737
$this->assertTrue($column->hasComponentView());
3838
}
3939

tests/Unit/Views/ComponentColumnTest.php

Lines changed: 0 additions & 33 deletions
This file was deleted.

tests/views/test.blade.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div>
2+
test
3+
</div>

0 commit comments

Comments
 (0)