diff --git a/src/Events/ColumnsSelected.php b/src/Events/ColumnsSelected.php new file mode 100644 index 000000000..99524d151 --- /dev/null +++ b/src/Events/ColumnsSelected.php @@ -0,0 +1,23 @@ +key = $key; + $this->columns = $columns; + } + + +} \ No newline at end of file diff --git a/src/Traits/WithColumnSelect.php b/src/Traits/WithColumnSelect.php index 17b4195e2..3c4df728c 100644 --- a/src/Traits/WithColumnSelect.php +++ b/src/Traits/WithColumnSelect.php @@ -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 { @@ -58,6 +60,7 @@ public function selectAllColumns() { $this->{$this->tableName}['columns'] = []; $this->forgetColumnSelectSession(); + event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns)); } public function deselectAllColumns() @@ -65,6 +68,7 @@ public function deselectAllColumns() $this->{$this->tableName}['columns'] = []; $this->selectedColumns = []; session([$this->getColumnSelectSessionKey() => []]); + event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns)); } public function updatedSelectedColumns(): void @@ -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)); } } diff --git a/tests/Events/ColumnsSelectedTest.php b/tests/Events/ColumnsSelectedTest.php new file mode 100644 index 000000000..5004224da --- /dev/null +++ b/tests/Events/ColumnsSelectedTest.php @@ -0,0 +1,30 @@ +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']); + }); + } +} \ No newline at end of file