56 lines
1.8 KiB
PHP
Executable File
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>
|