Skip to content

Commit bda5e01

Browse files
committed
Fix menu tree item action calls
1 parent 05c6d2b commit bda5e01

File tree

3 files changed

+30
-93
lines changed

3 files changed

+30
-93
lines changed

resources/views/livewire/menu-tree-item.blade.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@ class="h-5 w-5 text-gray-500 text-lg"/>
5353

5454
@if($showActions)
5555
<!-- Actions -->
56-
<div class="flex items-center space-x-2">
56+
<div class="flex items-center gap-1">
5757
@if($this->canHaveChildren())
5858
<x-filament::button
5959
color="gray"
6060
size="xs"
6161
icon="heroicon-o-plus"
6262
tooltip="{{ flexiblePagesTrans('menu_items.tree.add_child') }}"
6363
label-sr-only="{{ flexiblePagesTrans('menu_items.tree.add_child') }}"
64-
wire:click="mountAction('addChild')"
64+
wire:click="addChild"
6565
></x-filament::button>
6666
@endif
6767

@@ -71,7 +71,7 @@ class="h-5 w-5 text-gray-500 text-lg"/>
7171
icon="heroicon-o-pencil"
7272
tooltip="{{ flexiblePagesTrans('menu_items.tree.edit') }}"
7373
label-sr-only="{{ flexiblePagesTrans('menu_items.tree.edit') }}"
74-
wire:click="mountAction('edit')"
74+
wire:click="edit"
7575
></x-filament::button>
7676

7777
<x-filament::button
@@ -80,7 +80,7 @@ class="h-5 w-5 text-gray-500 text-lg"/>
8080
icon="heroicon-o-trash"
8181
tooltip="{{ flexiblePagesTrans('menu_items.tree.delete') }}"
8282
label-sr-only="{{ flexiblePagesTrans('menu_items.tree.delete') }}"
83-
wire:click="mountAction('delete')"
83+
wire:click="delete"
8484
></x-filament::button>
8585
</div>
8686
@endif

src/Livewire/MenuTreeItem.php

Lines changed: 10 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,11 @@
22

33
namespace Statikbe\FilamentFlexibleContentBlockPages\Livewire;
44

5-
use Filament\Actions\Action;
6-
use Filament\Actions\Concerns\InteractsWithActions;
7-
use Filament\Actions\Contracts\HasActions;
8-
use Filament\Actions\LocaleSwitcher;
9-
use Filament\Forms\Concerns\InteractsWithForms;
10-
use Filament\Forms\Contracts\HasForms;
115
use Livewire\Component;
126
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
13-
use Statikbe\FilamentFlexibleContentBlockPages\Filament\Form\Forms\MenuItemForm;
147

15-
class MenuTreeItem extends Component implements HasActions, HasForms
8+
class MenuTreeItem extends Component
169
{
17-
use InteractsWithActions;
18-
use InteractsWithForms;
1910

2011
public $item; // MenuItem model
2112

@@ -80,85 +71,24 @@ public function getItemTypeLabel(): string
8071
return flexiblePagesTrans('menu_items.tree.no_link');
8172
}
8273

83-
public function addChildAction(): Action
74+
public function addChild(): void
8475
{
85-
return Action::make('addChild')
86-
->form(MenuItemForm::getSchema())
87-
->fillForm([
88-
'parent_id' => $this->item->id,
89-
'is_visible' => true,
90-
'target' => '_self',
91-
])
92-
->action(function (array $data): void {
93-
$data['parent_id'] = $this->item->id;
94-
$this->createMenuItem($data);
95-
})
96-
->modalHeading(flexiblePagesTrans('menu_items.tree.add_child'))
97-
->modalSubmitActionLabel(__('Create'))
98-
->modalWidth('2xl')
99-
->slideOver()
100-
->extraModalFooterActions([
101-
LocaleSwitcher::make(),
102-
]);
76+
// Dispatch event to parent component with item ID for adding child
77+
$this->dispatch('show-add-child-modal', ['parent_id' => $this->item->id]);
10378
}
10479

105-
public function editAction(): Action
80+
public function edit(): void
10681
{
107-
return Action::make('edit')
108-
->form(MenuItemForm::getSchema())
109-
->fillForm([
110-
'link_type' => $this->item->link_type,
111-
'label' => $this->item->label,
112-
'use_model_title' => $this->item->use_model_title,
113-
'url' => $this->item->url,
114-
'route' => $this->item->route,
115-
'linkable_id' => $this->item->linkable_id,
116-
'target' => $this->item->target ?? '_self',
117-
'icon' => $this->item->icon,
118-
'is_visible' => $this->item->is_visible,
119-
])
120-
->action(function (array $data): void {
121-
$this->updateMenuItem($this->item->id, $data);
122-
})
123-
->modalHeading(flexiblePagesTrans('menu_items.tree.edit'))
124-
->modalSubmitActionLabel(__('Update'))
125-
->modalWidth('2xl')
126-
->slideOver()
127-
->extraModalFooterActions([
128-
LocaleSwitcher::make(),
129-
]);
82+
// Dispatch event to parent component with item ID for editing
83+
$this->dispatch('show-edit-modal', ['itemId' => $this->item->id]);
13084
}
13185

132-
public function deleteAction(): Action
86+
public function delete(): void
13387
{
134-
return Action::make('delete')
135-
->requiresConfirmation()
136-
->modalHeading(flexiblePagesTrans('menu_items.tree.delete_confirm_title'))
137-
->modalDescription(flexiblePagesTrans('menu_items.tree.delete_confirm_text'))
138-
->modalSubmitActionLabel(flexiblePagesTrans('menu_items.tree.delete'))
139-
->color('danger')
140-
->action(function (): void {
141-
$this->deleteMenuItem($this->item->id);
142-
});
88+
// Dispatch event to parent component with item ID for deletion
89+
$this->dispatch('show-delete-modal', ['itemId' => $this->item->id]);
14390
}
14491

145-
protected function createMenuItem(array $data): void
146-
{
147-
// Dispatch event to parent component to handle creation
148-
$this->dispatch('menu-item-created', $data);
149-
}
150-
151-
protected function updateMenuItem(int $itemId, array $data): void
152-
{
153-
// Dispatch event to parent component to handle update
154-
$this->dispatch('menu-item-updated', $itemId, $data);
155-
}
156-
157-
protected function deleteMenuItem(int $itemId): void
158-
{
159-
// Dispatch event to parent component to handle deletion
160-
$this->dispatch('menu-item-deleted', $itemId);
161-
}
16292

16393
public function render()
16494
{

src/Resources/MenuResource/Pages/ManageMenuItems.php

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -829,21 +829,28 @@ public function getItemTypeLabel(array $item): string
829829
return flexiblePagesTrans('menu_items.tree.no_link');
830830
}
831831

832-
#[On('menu-item-created')]
833-
public function handleMenuItemCreated(array $data): void
832+
#[On('show-add-child-modal')]
833+
public function handleShowAddChildModal(array $data): void
834834
{
835-
$this->createMenuItem($data);
835+
$parentId = $data['parent_id'] ?? null;
836+
$this->mountAction('addMenuItem', ['parent_id' => $parentId]);
836837
}
837838

838-
#[On('menu-item-updated')]
839-
public function handleMenuItemUpdated(int $itemId, array $data): void
839+
#[On('show-edit-modal')]
840+
public function handleShowEditModal(array $data): void
840841
{
841-
$this->updateMenuItem($itemId, $data);
842+
$itemId = $data['itemId'] ?? null;
843+
if ($itemId) {
844+
$this->mountAction('editMenuItem', ['itemId' => $itemId]);
845+
}
842846
}
843847

844-
#[On('menu-item-deleted')]
845-
public function handleMenuItemDeleted(int $itemId): void
848+
#[On('show-delete-modal')]
849+
public function handleShowDeleteModal(array $data): void
846850
{
847-
$this->deleteMenuItem($itemId);
851+
$itemId = $data['itemId'] ?? null;
852+
if ($itemId) {
853+
$this->mountAction('deleteMenuItem', ['itemId' => $itemId]);
854+
}
848855
}
849856
}

0 commit comments

Comments
 (0)