Files
2026-09-21 10:14:57 +01:00

56 lines
1.8 KiB
PHP
Executable File

@php
use Filament\Support\Enums\Alignment;
use Filament\Support\Enums\GridDirection;
use Illuminate\View\ComponentAttributeBag;
@endphp
@props([
'action',
'actionAlignment' => null,
'afterItem' => null,
'blocks',
'columns' => null,
'key',
'trigger',
'width' => null,
])
<x-filament::dropdown :placement="match ($actionAlignment) {
Alignment::Start, Alignment::Left => 'bottom-start',
Alignment::End, Alignment::Right => 'bottom-end',
default => null,
}" shift :width="$width" :attributes="\Filament\Support\prepare_inherited_attributes(
$attributes->class([
'fi-fo-builder-block-picker',
$actionAlignment instanceof Alignment ? 'fi-align-' . $actionAlignment->value : $actionAlignment,
]),
)">
<x-slot name="trigger">
{{ $trigger }}
</x-slot>
<x-filament::dropdown.list>
<div {{ new ComponentAttributeBag()->grid($columns, GridDirection::Column) }}>
@foreach ($blocks as $block)
@php
$blockIcon = $block->getIcon();
$wireClickActionArguments = ['block' => $block->getName()];
if (filled($afterItem)) {
$wireClickActionArguments['afterItem'] = $afterItem;
}
$wireClickActionArguments = \Illuminate\Support\Js::from($wireClickActionArguments);
$wireClickAction = "mountAction('{$action->getName()}', {$wireClickActionArguments}, { schemaComponent: '{$key}' })";
@endphp
<x-filament::dropdown.list.item :icon="$blockIcon" x-on:click="close" :wire:click="$wireClickAction">
{{ $block->getLabel() }}
</x-filament::dropdown.list.item>
@endforeach
</div>
</x-filament::dropdown.list>
</x-filament::dropdown>