Skip to content

Commit 0d3cbc8

Browse files
[v4] fix export action outside of table context (#18547)
* add logic exception when using isEnablingVisibleTableColumnsByDefault() outside of a table component and support use of export action outside of a table context * chore: fix code style * fix another occurance * update variable name * chore: fix code style * Update CanExportRecords.php --------- Co-authored-by: angus-mcritchie <[email protected]> Co-authored-by: Dan Harrin <[email protected]>
1 parent 41119fb commit 0d3cbc8

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

packages/actions/src/Concerns/CanExportRecords.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use Illuminate\Support\Number;
3434
use Illuminate\Support\Str;
3535
use Livewire\Component;
36+
use LogicException;
3637

3738
trait CanExportRecords
3839
{
@@ -105,7 +106,7 @@ protected function setUp(): void
105106
})
106107
->schema(function () use ($action): array {
107108
$isEnablingVisibleTableColumnsByDefault = $action->isEnablingVisibleTableColumnsByDefault();
108-
$visibleTableColumnsNames = $action->getVisibleTableColumnNames();
109+
$visibleTableColumnNames = $isEnablingVisibleTableColumnsByDefault ? $action->getVisibleTableColumnNames() : [];
109110

110111
return array_map(
111112
fn (ExportColumn $column): Flex => Flex::make([
@@ -114,7 +115,7 @@ protected function setUp(): void
114115
->hiddenLabel()
115116
->default(
116117
$isEnablingVisibleTableColumnsByDefault
117-
? (in_array($column->getName(), $visibleTableColumnsNames) && $column->isEnabledByDefault())
118+
? (in_array($column->getName(), $visibleTableColumnNames) && $column->isEnabledByDefault())
118119
: $column->isEnabledByDefault()
119120
)
120121
->live()
@@ -198,11 +199,12 @@ protected function setUp(): void
198199
->mapWithKeys(fn (array $column, string $columnName): array => [$columnName => $column['label']])
199200
->all();
200201
} else {
201-
$visibleTableColumnNames = $action->getVisibleTableColumnNames();
202+
$isEnablingVisibleTableColumnsByDefault = $action->isEnablingVisibleTableColumnsByDefault();
203+
$visibleTableColumnNames = $isEnablingVisibleTableColumnsByDefault ? $action->getVisibleTableColumnNames() : [];
202204

203205
$columnMap = collect($exporter::getColumns())
204206
->when(
205-
$action->isEnablingVisibleTableColumnsByDefault(),
207+
$isEnablingVisibleTableColumnsByDefault,
206208
fn ($columns): Collection => $columns->filter(
207209
fn (ExportColumn $column): bool => in_array($column->getName(), $visibleTableColumnNames) && $column->isEnabledByDefault(),
208210
),
@@ -362,6 +364,10 @@ public function exporter(string $exporter): static
362364
*/
363365
public function getVisibleTableColumnNames(): array
364366
{
367+
if (! $this->getLivewire() instanceof HasTable) {
368+
throw new LogicException('Cannot get visible table columns from a non-table Livewire component.');
369+
}
370+
365371
return array_keys($this->getLivewire()->getTable()->getVisibleColumns());
366372
}
367373

0 commit comments

Comments
 (0)