@props([ // Identificador único 'uid' => uniqid(), // Modelos para Livewire 'radioModel' => '', 'textModel' => '', // Etiqueta y clases de la etiqueta 'label' => '', 'labelClass' => '', // Clases generales 'align' => 'start', 'size' => '', // Tamaño del input (sm, lg) 'mb0' => false, // Remover margen inferior 'parentClass' => '', // Elementos opcionales antes/después del input 'prefix' => null, 'suffix' => null, // Íconos dentro del input 'icon' => null, // Ícono fijo 'clickableIcon' => null, // Ícono con botón // Configuración del radio 'checked' => false, 'disabled' => false, 'name' => '', // Grupo del radio // Configuración del input de texto 'disableOnOffRadio' => true, // Deshabilita input hasta que el radio esté seleccionado 'focusOnCheck' => true, // Hace foco en el input al seleccionar el radio // Texto de ayuda 'helperText' => '', // Atributos adicionales para el input de texto 'attributes' => new \Illuminate\View\ComponentAttributeBag([]), ]) @php // **Generación de Name, ID y Model** $livewireRadio = $radioModel ? "wire:model=$radioModel" : ''; $livewireText = $textModel ? "wire:model=$textModel" : ''; $nameRadio = $attributes->get('name', $radioModel ?: $name); $nameText = $attributes->get('name', $textModel); $radioId = $attributes->get('id', 'radio_' . $uid); $textInputId = 'txt_' . $uid; // **Placeholder del input de texto** $placeholder = $attributes->get('placeholder', 'Ingrese información'); // **Clases dinámicas** $sizeClass = match ($size) { 'sm' => 'form-control-sm', 'lg' => 'form-control-lg', default => '', }; $fullClass = trim("form-control $sizeClass"); // **Fusionar atributos del input de texto** $inputAttributes = $attributes->merge([ 'id' => $textInputId, 'name' => $nameText, 'placeholder' => $placeholder, ])->class($fullClass); @endphp {{-- ============================ RADIO BUTTON CON INPUT GROUP ============================ --}}
@if ($label) @endif
{{-- Radio dentro del input-group-text --}}
{{-- Prefijo opcional --}} @isset($prefix) {{ $prefix }} @endisset {{-- Ícono fijo opcional --}} @isset($icon) @endisset {{-- Input de texto dentro del mismo grupo --}} {{-- Sufijo opcional --}} @isset($suffix) {{ $suffix }} @endisset {{-- Ícono clickeable opcional --}} @isset($clickableIcon) @endisset
{{-- Texto de ayuda opcional --}} @if ($helperText)
{{ $helperText }}
@endif
{{-- ============================ JAVASCRIPT PURO ============================ --}}