71 lines
2.1 KiB
PHP
71 lines
2.1 KiB
PHP
@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 => $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>
|