Skip to content

Commit ee78ed9

Browse files
feat: [LAR-33] Remove Edit and Page and add SliveOver , Add Channel description , remove blank space and add thread number columns and Edit create Test
1 parent 6661b64 commit ee78ed9

File tree

5 files changed

+54
-75
lines changed

5 files changed

+54
-75
lines changed

app/Filament/Resources/ChannelResource.php

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
use App\Models\Channel;
99
use Filament\Forms;
1010
use Filament\Forms\Form;
11-
use Filament\Forms\Get;
12-
use Filament\Forms\Set;
1311
use Filament\Resources\Resource;
12+
use Filament\Support\Enums\MaxWidth;
1413
use Filament\Tables;
1514
use Filament\Tables\Actions\ActionGroup;
1615
use Filament\Tables\Table;
@@ -23,28 +22,37 @@ final class ChannelResource extends Resource
2322

2423
protected static ?string $navigationIcon = 'heroicon-o-queue-list';
2524

25+
public static function getLabel(): string
26+
{
27+
return __('Channels');
28+
}
29+
2630
public static function form(Form $form): Form
2731
{
2832
return $form
2933
->schema([
30-
Forms\Components\TextInput::make('name')
31-
->required()
32-
->live(onBlur: true)
33-
->afterStateUpdated(function (Get $get, Set $set, ?string $old, ?string $state): void {
34-
if (($get('slug') ?? '') !== Str::slug($old)) {
35-
return;
36-
}
37-
38-
$set('slug', Str::slug($state));
39-
}),
40-
Forms\Components\TextInput::make('slug')
41-
->required(),
42-
Forms\Components\Select::make('parent_id')
43-
->relationship('parent', 'name', modifyQueryUsing: fn (Builder $query) => $query->whereNull('parent_id'))
44-
->default(null),
45-
Forms\Components\TextInput::make('color')
46-
->maxLength(255)
47-
->type('color'),
34+
Forms\Components\Section::make()
35+
->schema([
36+
Forms\Components\TextInput::make('name')
37+
->required()
38+
->live(onBlur: true)
39+
->afterStateUpdated(function (string $operation, $state, Forms\Set $set): void {
40+
$set('slug', Str::slug($state));
41+
}),
42+
Forms\Components\TextInput::make('slug')
43+
->readOnly()
44+
->helperText(__('Cette valeur est générée dynamiquement en fonction du Name.')),
45+
Forms\Components\Select::make('parent_id')
46+
->relationship('parent', 'name', fn (Builder $query) => $query->whereNull('parent_id'))
47+
->default(null),
48+
Forms\Components\TextInput::make('color')
49+
->maxLength(255)
50+
->type('color'),
51+
Forms\Components\Textarea::make('description.fr')
52+
->label('Description')
53+
->columnSpanFull(),
54+
])
55+
->columnSpan(['lg' => 2]),
4856
]);
4957
}
5058

@@ -59,25 +67,25 @@ public static function table(Table $table): Table
5967
Tables\Columns\TextColumn::make('parent.name')
6068
->numeric()
6169
->sortable(),
70+
Tables\Columns\TextColumn::make('thread_number')
71+
->label('Nombre de thead')
72+
->getStateUsing(fn ($record) => $record->threads()->count()),
6273
Tables\Columns\TextColumn::make('color')
6374
->searchable(),
6475
Tables\Columns\TextColumn::make('created_at')
6576
->dateTime()
6677
->sortable()
6778
->toggleable(isToggledHiddenByDefault: true),
68-
Tables\Columns\TextColumn::make('updated_at')
69-
->dateTime()
70-
->sortable()
71-
->toggleable(isToggledHiddenByDefault: true),
7279
])
7380
->filters([
74-
//
81+
7582
])
7683
->actions([
7784
ActionGroup::make([
7885
Tables\Actions\DeleteAction::make(),
7986
Tables\Actions\EditAction::make()
80-
->color('warning'),
87+
->slideOver()
88+
->modalWidth(MaxWidth::Large),
8189
]),
8290
])
8391
->bulkActions([
@@ -91,8 +99,6 @@ public static function getPages(): array
9199
{
92100
return [
93101
'index' => Pages\ListChannels::route('/'),
94-
'create' => Pages\CreateChannel::route('/create'),
95-
'edit' => Pages\EditChannel::route('/{record}/edit'),
96102
];
97103
}
98104
}

app/Filament/Resources/ChannelResource/Pages/CreateChannel.php

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/Filament/Resources/ChannelResource/Pages/EditChannel.php

Lines changed: 0 additions & 21 deletions
This file was deleted.

app/Filament/Resources/ChannelResource/Pages/ListChannels.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use App\Filament\Resources\ChannelResource;
88
use Filament\Actions;
99
use Filament\Resources\Pages\ListRecords;
10+
use Filament\Support\Enums\MaxWidth;
1011

1112
final class ListChannels extends ListRecords
1213
{
@@ -15,7 +16,9 @@ final class ListChannels extends ListRecords
1516
protected function getHeaderActions(): array
1617
{
1718
return [
18-
Actions\CreateAction::make(),
19+
Actions\CreateAction::make()
20+
->slideOver()
21+
->modalWidth(MaxWidth::Large),
1922
];
2023
}
2124
}

tests/Feature/Filament/ChannelTest.php

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,39 @@
33
declare(strict_types=1);
44

55
use App\Filament\Resources\ChannelResource;
6-
use App\Filament\Resources\ChannelResource\Pages\CreateChannel;
76
use App\Filament\Resources\ChannelResource\Pages\ListChannels;
87
use App\Models\Channel;
8+
use Filament\Actions\CreateAction;
99
use Filament\Actions\EditAction;
1010
use Livewire\Livewire;
1111

1212
beforeEach(function (): void {
1313
$this->user = $this->login();
14-
$this->channels = Channel::factory()
15-
->count(10)
16-
->create();
1714
});
1815

1916
describe(ChannelResource::class, function (): void {
20-
2117
it('page can display table with records', function (): void {
18+
$channels = Channel::factory()
19+
->count(10)
20+
->create();
2221
Livewire::test(ListChannels::class)
23-
->assertCanSeeTableRecords($this->channels);
22+
->assertCanSeeTableRecords($channels);
2423
});
2524

2625
it('Admin user can create channel', function (): void {
27-
$name = 'my channel';
28-
29-
Livewire::test(CreateChannel::class)
30-
->fillForm([
31-
'name' => $name,
26+
Livewire::test(ListChannels::class)
27+
->callAction(CreateAction::class, data: [
28+
'name' => $name = 'my channel',
3229
'color' => '#FFFFFF',
3330
])
34-
->call('create');
31+
->assertHasNoActionErrors()
32+
->assertStatus(200);
33+
34+
$channel = Channel::first();
35+
36+
expect($channel)
37+
->toBeInstanceOf(Channel::class)
38+
->and($channel->name)->toBe($name);
3539
});
3640

3741
it('Admin user can edit channel', function (): void {

0 commit comments

Comments
 (0)