53 lines
1.7 KiB
PHP
53 lines
1.7 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\View\Form;
|
||
|
|
||
|
use App\View\Traits\HasFormDimensions;
|
||
|
use Illuminate\View\Component;
|
||
|
|
||
|
class Editor extends Component
|
||
|
{
|
||
|
|
||
|
use HasFormDimensions;
|
||
|
|
||
|
public string $id;
|
||
|
|
||
|
public function __construct(
|
||
|
public string $name,
|
||
|
public string $size = 'default',
|
||
|
public ?string $hint = null,
|
||
|
public bool $required = false,
|
||
|
public string $label = '',
|
||
|
public array $conditions = [],
|
||
|
) {
|
||
|
$this->id = str()->uuid()->toString();
|
||
|
}
|
||
|
|
||
|
public function render()
|
||
|
{
|
||
|
return <<<'HTML'
|
||
|
<div class="flex flex-col group {{$heightClass}}" x-data="">
|
||
|
@if ($label)
|
||
|
<x-form::label :required="$required">{{$label}}</x-form::label>
|
||
|
@endif
|
||
|
|
||
|
<div class="relative w-full h-full">
|
||
|
<div class="
|
||
|
w-full border-gray-600 border-solid text-gray-300 bg-gray-700 leading-none rounded-lg
|
||
|
group-[.size-default]:border-2 group-[.size-sm]:border
|
||
|
group-[.size-default]:text-sm group-[.size-sm]:text-xs
|
||
|
group-[.size-default]:p-2 group-[.size-sm]:p-1
|
||
|
" @updated="$wire.{{$attributes->wire('model')->value}} = $event.detail" x-bind="editor"x-data="{
|
||
|
conditions: @js($conditions),
|
||
|
value: $wire.{{$attributes->wire('model')->value}}
|
||
|
}" id="{{$id}}" {{$attributes}}></div>
|
||
|
<x-ui::errors :for="$name" />
|
||
|
@if($hint)
|
||
|
<x-form::hint>{{$hint}}</x-form::hint>
|
||
|
@endif
|
||
|
</div>
|
||
|
</div>
|
||
|
HTML;
|
||
|
}
|
||
|
}
|