Skip to content

Commit 7aba8d1

Browse files
committed
refactor: extract shared field management methods to trait
1 parent b7d1f79 commit 7aba8d1

File tree

3 files changed

+47
-62
lines changed

3 files changed

+47
-62
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Relaticle\CustomFields\Livewire\Concerns;
6+
7+
use Illuminate\Database\Eloquent\Collection;
8+
use Livewire\Attributes\Computed;
9+
use Livewire\Attributes\On;
10+
use Relaticle\CustomFields\CustomFields;
11+
12+
/**
13+
* Shared logic for managing custom fields in Livewire components.
14+
*/
15+
trait ManagesFields
16+
{
17+
#[Computed]
18+
public function fields(): Collection
19+
{
20+
return $this->section->fields()->withDeactivated()->orderBy('sort_order')->get();
21+
}
22+
23+
#[On('field-width-updated')]
24+
public function fieldWidthUpdated(int|string $fieldId, int $width): void
25+
{
26+
$model = CustomFields::newCustomFieldModel();
27+
$model->where($model->getKeyName(), $fieldId)->update(['width' => $width]);
28+
29+
$this->section->refresh();
30+
}
31+
32+
#[On('field-deleted')]
33+
public function fieldDeleted(): void
34+
{
35+
$this->section->refresh();
36+
}
37+
38+
#[On('fields-reordered')]
39+
public function fieldsReordered(): void
40+
{
41+
unset($this->fields);
42+
}
43+
}

src/Livewire/ManageCustomFieldSection.php

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,55 +13,25 @@
1313
use Filament\Support\Enums\Size;
1414
use Filament\Support\Enums\Width;
1515
use Illuminate\Contracts\View\View;
16-
use Illuminate\Database\Eloquent\Collection;
17-
use Livewire\Attributes\Computed;
18-
use Livewire\Attributes\On;
1916
use Livewire\Component;
2017
use Relaticle\CustomFields\CustomFields;
2118
use Relaticle\CustomFields\Filament\Management\Schemas\FieldForm;
2219
use Relaticle\CustomFields\Filament\Management\Schemas\SectionForm;
2320
use Relaticle\CustomFields\Livewire\Concerns\CreatesCustomFields;
21+
use Relaticle\CustomFields\Livewire\Concerns\ManagesFields;
2422
use Relaticle\CustomFields\Models\CustomFieldSection;
2523

2624
final class ManageCustomFieldSection extends Component implements HasActions, HasForms
2725
{
2826
use CreatesCustomFields;
2927
use InteractsWithActions;
3028
use InteractsWithForms;
29+
use ManagesFields;
3130

3231
public string $entityType;
3332

3433
public CustomFieldSection $section;
3534

36-
#[Computed]
37-
public function fields(): Collection
38-
{
39-
return $this->section->fields()->withDeactivated()->orderBy('sort_order')->get();
40-
}
41-
42-
#[On('field-width-updated')]
43-
public function fieldWidthUpdated(int|string $fieldId, int $width): void
44-
{
45-
// Update the width
46-
$model = CustomFields::newCustomFieldModel();
47-
$model->where($model->getKeyName(), $fieldId)->update(['width' => $width]);
48-
49-
// Re-fetch the fields
50-
$this->section->refresh();
51-
}
52-
53-
#[On('field-deleted')]
54-
public function fieldDeleted(): void
55-
{
56-
$this->section->refresh();
57-
}
58-
59-
#[On('fields-reordered')]
60-
public function fieldsReordered(): void
61-
{
62-
unset($this->fields);
63-
}
64-
6535
public function updateFieldsOrder(int|string $sectionId, array $fields): void
6636
{
6737
$model = CustomFields::newCustomFieldModel();

src/Livewire/ManageFieldsWithoutSections.php

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,11 @@
1212
use Filament\Support\Enums\Size;
1313
use Filament\Support\Enums\Width;
1414
use Illuminate\Contracts\View\View;
15-
use Illuminate\Database\Eloquent\Collection;
16-
use Livewire\Attributes\Computed;
17-
use Livewire\Attributes\On;
1815
use Livewire\Component;
1916
use Relaticle\CustomFields\CustomFields;
2017
use Relaticle\CustomFields\Filament\Management\Schemas\FieldForm;
2118
use Relaticle\CustomFields\Livewire\Concerns\CreatesCustomFields;
19+
use Relaticle\CustomFields\Livewire\Concerns\ManagesFields;
2220
use Relaticle\CustomFields\Models\CustomFieldSection;
2321

2422
/**
@@ -29,38 +27,12 @@ final class ManageFieldsWithoutSections extends Component implements HasActions,
2927
use CreatesCustomFields;
3028
use InteractsWithActions;
3129
use InteractsWithForms;
30+
use ManagesFields;
3231

3332
public string $entityType;
3433

3534
public CustomFieldSection $section;
3635

37-
#[Computed]
38-
public function fields(): Collection
39-
{
40-
return $this->section->fields()->withDeactivated()->orderBy('sort_order')->get();
41-
}
42-
43-
#[On('field-width-updated')]
44-
public function fieldWidthUpdated(int|string $fieldId, int $width): void
45-
{
46-
$model = CustomFields::newCustomFieldModel();
47-
$model->where($model->getKeyName(), $fieldId)->update(['width' => $width]);
48-
49-
$this->section->refresh();
50-
}
51-
52-
#[On('field-deleted')]
53-
public function fieldDeleted(): void
54-
{
55-
$this->section->refresh();
56-
}
57-
58-
#[On('fields-reordered')]
59-
public function fieldsReordered(): void
60-
{
61-
unset($this->fields);
62-
}
63-
6436
public function updateFieldsOrder(array $fields): void
6537
{
6638
$model = CustomFields::newCustomFieldModel();

0 commit comments

Comments
 (0)