diff --git a/app/View/Form/Select.php b/app/View/Form/Select.php new file mode 100644 index 00000000..f544efa4 --- /dev/null +++ b/app/View/Form/Select.php @@ -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; + } +}