46 lines
1.6 KiB
PHP
46 lines
1.6 KiB
PHP
@props([
|
|
'name',
|
|
'label' => null,
|
|
'options' => [],
|
|
'selected' => null,
|
|
'multiple' => false,
|
|
'required' => false,
|
|
'divClass' => null,
|
|
'hideRequiredIndicator' => false,
|
|
])
|
|
<fieldset class="flex flex-col relative w-full {{ $divClass ?? '' }}">
|
|
@if ($label)
|
|
<legend class="mb-1">
|
|
<label for="{{ $name }}"
|
|
class="text-sm font-bold text-base">
|
|
{{ $label }}
|
|
@if ($required && !$hideRequiredIndicator)
|
|
<span class="text-red-500">*</span>
|
|
@endif
|
|
</label>
|
|
</legend>
|
|
@endif
|
|
|
|
<select id="{{ $id ?? $name }}" {{ $multiple ? 'multiple' : '' }} {{ $attributes->only(['required', 'wire:model',
|
|
'wire:dirty.class', 'wire:model.live']) }}
|
|
class="block px-2.5 py-2.5 w-full text-sm text-base bg-background-secondary/50 border border-neutral
|
|
rounded-md shadow-sm outline-none focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary transition-all duration-300 ease-in-out form-select">
|
|
@if (count($options) == 0 && $slot)
|
|
{{ $slot }}
|
|
@else
|
|
@foreach ($options as $key => $option)
|
|
<option value="{{ gettype($options) == 'array' ? $option : $key }}" {{ ($multiple && $selected ? in_array($key,
|
|
$selected) : $selected==$option) ? 'selected' : '' }}>
|
|
{{ $option }}</option>
|
|
@endforeach
|
|
@endif
|
|
</select>
|
|
@if ($multiple)
|
|
<p class="text-xs text-base">
|
|
{{ __('Pro tip: Hold down the Ctrl (Windows) / Command (Mac) button to select multiple options.') }}</p>
|
|
@endif
|
|
|
|
@error($name)
|
|
<p class="text-red-500 text-xs">{{ $message }}</p>
|
|
@enderror
|
|
</fieldset> |