Skip to content

Commit

Permalink
Merge pull request #1 from AssetFlw/Trigger-events-when-changing-sele…
Browse files Browse the repository at this point in the history
…cted-columns

added event dispatch on column selection with test
  • Loading branch information
tobiashammarstrand authored Feb 9, 2023
2 parents 1ca82cd + 3f3f4e6 commit d430906
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/Events/ColumnsSelected.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

namespace Rappasoft\LaravelLivewireTables\Events;

use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;
use JohnDoe\BlogPackage\Models\Post;

class ColumnsSelected
{
use Dispatchable, SerializesModels;

public $columns;
public $key;

public function __construct($key, $columns)
{
$this->key = $key;
$this->columns = $columns;
}


}
5 changes: 5 additions & 0 deletions src/Traits/WithColumnSelect.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

use Rappasoft\LaravelLivewireTables\Traits\Configuration\ColumnSelectConfiguration;
use Rappasoft\LaravelLivewireTables\Traits\Helpers\ColumnSelectHelpers;
use Rappasoft\LaravelLivewireTables\Events\ColumnsSelected;
use Illuminate\Support\Facades\Event;

trait WithColumnSelect
{
Expand Down Expand Up @@ -58,13 +60,15 @@ public function selectAllColumns()
{
$this->{$this->tableName}['columns'] = [];
$this->forgetColumnSelectSession();
event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns));
}

public function deselectAllColumns()
{
$this->{$this->tableName}['columns'] = [];
$this->selectedColumns = [];
session([$this->getColumnSelectSessionKey() => []]);
event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns));
}

public function updatedSelectedColumns(): void
Expand All @@ -75,6 +79,7 @@ public function updatedSelectedColumns(): void
} else {
$this->{$this->tableName}['columns'] = $this->selectedColumns;
session([$this->getColumnSelectSessionKey() => $this->{$this->tableName}['columns']]);
event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns));
}
}

Expand Down
30 changes: 30 additions & 0 deletions tests/Events/ColumnsSelectedTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace Rappasoft\LaravelLivewireTables\Events;

use Rappasoft\LaravelLivewireTables\Tests\TestCase;
use Rappasoft\LaravelLivewireTables\Events\ColumnsSelected;
use Illuminate\Support\Facades\Event;


class ColumnSelectedTest extends TestCase
{

/** @test */
function an_event_is_emitted_when_a_column_selection_are_updated()
{
Event::fake([
ColumnsSelected::class
]);

$test['columns'] = $this->basicTable->selectedColumns;
$test['key'] = $this->basicTable->getDataTableFingerprint().'-columnSelectEnabled';

// Select all columns to test event trigger
$this->basicTable->selectAllColumns();

Event::assertDispatched(ColumnsSelected::class, function ($event) use ($test) {
return ($event->columns === $test['columns'] && $event->key === $test['key']);
});
}
}

0 comments on commit d430906

Please sign in to comment.