Add select field
This commit is contained in:
		
							parent
							
								
									ceec787f2e
								
							
						
					
					
						commit
						fe134d86ca
					
				|  | @ -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; | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue