Add select field

This commit is contained in:
philipp lang 2024-10-18 21:00:13 +02:00
parent bf70ae3e1e
commit d0c641c5c2
1 changed files with 59 additions and 0 deletions

59
app/View/Form/Select.php Normal file
View File

@ -0,0 +1,59 @@
<?php
namespace App\View\Form;
use App\View\Traits\HasFormDimensions;
use Illuminate\View\Component;
use Illuminate\View\ComponentAttributeBag;
class Select 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 $options = [],
public bool $disabled = false,
) {
$this->id = str()->uuid()->toString();
}
public function render()
{
return <<<'HTML'
<label class="flex flex-col group {{$heightClass}}" for="{{$id}}" style="{{$heightVars}}">
@if ($label)
<x-form::label :required="$required">{{$label}}</x-form::label>
@endif
<div class="relative flex-none flex">
<select {{$attributes}} @if($disabled) disabled @endif name="{{$name}}"
class="
w-full h-[var(--height)] 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]:px-2 group-[.size-sm]:px-1
py-0
"
>
<option value="">-- kein --</option>
@foreach ($options as $option)
<option value="{{$option['id']}}">{{ $option['name'] }}</option>
@endforeach
</select>
@if($hint)
<x-form::hint class="right-6">{{$hint}}</x-form::hint>
@endif
</div>
</label>
HTML;
}
}