Skip to content

Commit b0fbbcd

Browse files
committed
feat: issue-49 - Update ImageUpload actions and columns
1 parent 8cb40e4 commit b0fbbcd

File tree

3 files changed

+71
-14
lines changed

3 files changed

+71
-14
lines changed

app/Filament/Resources/ImageUploadResource.php

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Filament\Tables\Columns\SpatieMediaLibraryImageColumn;
1717
use Filament\Tables\Table;
1818
use Illuminate\Database\Eloquent\Builder;
19+
use Webbingbrasil\FilamentCopyActions\Tables\Actions\CopyAction;
1920

2021
class ImageUploadResource extends Resource
2122
{
@@ -80,36 +81,40 @@ function () {
8081
public static function table(Table $table): Table
8182
{
8283
return $table
84+
->defaultSort('updated_at', 'desc')
8385
->columns([
8486
Tables\Columns\TextColumn::make('title')
8587
->searchable(),
86-
SpatieMediaLibraryImageColumn::make('image')->collection('image'),
87-
Tables\Columns\TextColumn::make('foo')
88-
->label('Markdown URL')
89-
->badge()
90-
->getStateUsing(function (ImageUpload $record) {
91-
return 'Copy Markdown URL';
92-
})
93-
->copyable()
94-
->copyableState(fn (ImageUpload $record): string => $record->markdownUrl),
88+
SpatieMediaLibraryImageColumn::make('image')
89+
->collection('image'),
9590
Tables\Columns\TextColumn::make('user.name')
9691
->numeric()
9792
->hidden(fn () => ! auth()->user()->isAdministrator())
9893
->sortable(),
9994
Tables\Columns\TextColumn::make('created_at')
100-
->dateTime()
95+
->label('Created At')
96+
->date()
10197
->sortable()
10298
->toggleable(isToggledHiddenByDefault: true),
10399
Tables\Columns\TextColumn::make('updated_at')
104-
->dateTime()
100+
->label('Updated At')
101+
->date()
105102
->sortable()
106-
->toggleable(isToggledHiddenByDefault: true),
103+
->toggleable(),
107104
])
108105
->filters([
109106
//
110107
])
111108
->actions([
112-
Tables\Actions\EditAction::make(),
109+
Tables\Actions\ActionGroup::make([
110+
Tables\Actions\EditAction::make(),
111+
CopyAction::make('copyImageUrl')
112+
->label('Copy Image URL')
113+
->copyable(fn (ImageUpload $record): string => $record->getFirstMediaUrl('image')),
114+
CopyAction::make('copyMarkdownUrl')
115+
->label('Copy Markdown URL')
116+
->copyable(fn (ImageUpload $record): string => $record->markdownUrl),
117+
]),
113118
])
114119
->bulkActions([
115120
Tables\Actions\BulkActionGroup::make([

app/Filament/Resources/ImageUploadResource/Pages/EditImageUpload.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
namespace App\Filament\Resources\ImageUploadResource\Pages;
44

55
use App\Filament\Resources\ImageUploadResource;
6+
use App\Models\ImageUpload;
67
use Filament\Actions;
78
use Filament\Resources\Pages\EditRecord;
9+
use Webbingbrasil\FilamentCopyActions\Pages\Actions\CopyAction;
810

911
class EditImageUpload extends EditRecord
1012
{
@@ -13,7 +15,15 @@ class EditImageUpload extends EditRecord
1315
protected function getHeaderActions(): array
1416
{
1517
return [
16-
Actions\DeleteAction::make(),
18+
Actions\ActionGroup::make([
19+
CopyAction::make('copyImageUrl')
20+
->label('Copy Image URL')
21+
->copyable(fn (ImageUpload $record): string => $record->getFirstMediaUrl('image')),
22+
CopyAction::make('copyMarkdownUrl')
23+
->label('Copy Markdown URL')
24+
->copyable(fn (ImageUpload $record): string => $record->markdownUrl),
25+
Actions\DeleteAction::make(),
26+
]),
1727
];
1828
}
1929
}

tests/Filament/ImageUploadResourceTest.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,4 +315,46 @@
315315

316316
$this->assertModelMissing($record);
317317
});
318+
319+
// Actions
320+
321+
it('has copyImageUrl action on list page', function () {
322+
$record = Model::factory()
323+
->for($this->nonAdmin)
324+
->create();
325+
326+
livewire(ListResource::class)
327+
->assertTableActionVisible('copyImageUrl');
328+
});
329+
330+
it('has copyImageUrl action on edit page', function () {
331+
$record = Model::factory()
332+
->for($this->nonAdmin)
333+
->create();
334+
335+
livewire(EditResource::class, [
336+
'record' => $record->getRouteKey(),
337+
])
338+
->assertActionExists('copyImageUrl');
339+
});
340+
341+
it('has copyMarkdownUrl action on list page', function () {
342+
$record = Model::factory()
343+
->for($this->nonAdmin)
344+
->create();
345+
346+
livewire(ListResource::class)
347+
->assertTableActionVisible('copyMarkdownUrl');
348+
});
349+
350+
it('has copyMarkdownUrl action on edit page', function () {
351+
$record = Model::factory()
352+
->for($this->nonAdmin)
353+
->create();
354+
355+
livewire(EditResource::class, [
356+
'record' => $record->getRouteKey(),
357+
])
358+
->assertActionExists('copyMarkdownUrl');
359+
});
318360
});

0 commit comments

Comments
 (0)