base commit
This commit is contained in:
41
app/Filament/Support/ExportExcelAction.php
Normal file
41
app/Filament/Support/ExportExcelAction.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Filament\Support;
|
||||
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\BulkAction;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
|
||||
class ExportExcelAction
|
||||
{
|
||||
/**
|
||||
* @param class-string $exportClass
|
||||
*/
|
||||
public static function make(string $name, string $exportClass, string $filename): Action
|
||||
{
|
||||
return Action::make($name)
|
||||
->label('Export')
|
||||
->icon('heroicon-o-arrow-down-tray')
|
||||
->action(fn (): BinaryFileResponse => Excel::download(new $exportClass, $filename));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param class-string $exportClass
|
||||
*/
|
||||
public static function bulk(string $name, string $exportClass, string $filename): BulkAction
|
||||
{
|
||||
return BulkAction::make($name)
|
||||
->label('Export Selected')
|
||||
->icon('heroicon-o-arrow-down-tray')
|
||||
->action(function (Collection $records) use ($exportClass, $filename): BinaryFileResponse {
|
||||
$ids = $records->pluck('id')->all();
|
||||
|
||||
return Excel::download(new $exportClass($ids), $filename);
|
||||
})
|
||||
->deselectRecordsAfterCompletion();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user