Implementación de Diseño y Gestión de Estado con MudRadioGroup en Blazor

El componente MudRadioGroup en la biblioteca MudBlazor permite crear botones de selección única en aplicaciones Blazor. Esta guía explora técnicas para configurar su disposición visual y manejar estados de manera eficiente.

Análisis de la Estructura del Componente

La lógica principle de MudRadioGroup reside en archivos como MudRadioGroup.razor.cs, que define una clase genérica para manejar la selección. Los botones individuales se implementan mediante MudRadio.razor.cs, usando métodos para registrarse y actualizar el estado del grupo.

Configuración de la Disposición Visual

El atributo Orientation controla si los botones se alinean vertical u horizontalmente. Un ejemplo básico muestra cómo establecer una disposición vertical con valores predeterminados:

<MudRadioGroup T="string" @bind-Value="valorElegido" Orientation="Orientation.Vertical">
    <MudRadio Value="alpha">Opción Alfa</MudRadio>
    <MudRadio Value="beta">Opción Beta</MudRadio>
    <MudRadio Value="gamma">Opción Gamma</MudRadio>
</MudRadioGroup>

Se pueden aplicar clases CSS personalizadas para ajustar estilos, manteniendo la coherencia visual mediante atributos como Class.

Gestión de Estados mediante Enlace Bidireccional

Enlace Básico con Valores Iniciales

El decorador @bind-Value sincroniza el estado del componente con una variable en el código. A continuación, un ejemplo con un valer inicial asignado:

<MudRadioGroup T="string" @bind-Value="seleccionActual">
    <MudRadio Value="x">Elemento X</MudRadio>
    <MudRadio Value="y">Elemento Y</MudRadio>
</MudRadioGroup>

@code {
    private string seleccionActual = "y"; // Valor por defecto
}

Sincronización entre Múltiples Grupos

Dos grupos pueden compartir la misma variable para mantener la selección unificada. Esto facilita la creación de interfaces donde diferentes secciones reflejan opciones relacionadas:

<MudRadioGroup T="string" @bind-Value="opcionCompartida">
    <!-- Contenido del primer grupo -->
</MudRadioGroup>
<MudRadioGroup T="string" @bind-Value="opcionCompartida">
    <!-- Contenido del segundo grupo -->
</MudRadioGroup>

Restablecimiento de la Selección

Para limpiar la elección actual, se puede asignar null a la variable enlazada, como se muestra en este botón de reinicio:

<MudButton OnClick="() => seleccionActual = null">Borrar Selección</MudButton>

Controles Avanzados de Interacción

Los estados Disabled y ReadOnly restringen la interacción del usuario. El primero desactiva visualmente y funcionalmente los botones, mientras que el segundo permite ver pero no modificar la selección. Un ejemplo incluye interruptores para alternar estos estados:

<MudRadioGroup T="string" Disabled="@bloqueado" ReadOnly="@soloLectura">
    <!-- Botones del grupo -->
</MudRadioGroup>
<MudSwitch @bind-Checked="bloqueado" Label="Deshabilitar" />
<MudSwitch @bind-Checked="soloLectura" Label="Solo Lectura" />

El componente también soporta navegación por teclado, con teclas como Enter para seleccionar, Backspace para borrar y Tab para mover el foco entre opciones.

Ejemplo Integrado: Panel de Configuración de Preferencias

Este caso combina diseño y gestión de estado para un panel de preferencias con dos grupos independientes: uno para temas visuales y otro para notificaciones.

<MudCard>
    <MudCardContent>
        <MudTypography variant="h6">Preferencias del Usuario</MudTypography>
        
        <MudRadioGroup T="string" @bind-Value="temaVisual" Class="mt-4">
            <MudRadio Value="claro" Color="Color.Primary">Modo Claro</MudRadio>
            <MudRadio Value="oscuro" Color="Color.Secondary">Modo Oscuro</MudRadio>
            <MudRadio Value="auto" Color="Color.Tertiary">Automático</MudRadio>
        </MudRadioGroup>
        
        <MudRadioGroup T="string" @bind-Value="configNotificaciones" Orientation="Orientation.Horizontal" Class="mt-6">
            <MudRadio Value="todas" Ripple="false">Todas las Alertas</MudRadio>
            <MudRadio Value="importantes" Ripple="false">Solo Importantes</MudRadio>
            <MudRadio Value="ninguna" Ripple="false">Desactivar</MudRadio>
        </MudRadioGroup>
    </MudCardContent>
</MudCard>

@code {
    private string temaVisual = "auto";
    private string configNotificaciones = "importantes";
}

Validación y Recomendaciones Prácticas

Las pruebas unitarias en MudBlazor cubren escenarios como estados iniciales, sincronización entre grupos y manejo de excepciones. Es aconsejable revisar estos tests para garantizar robustez en distintas condiciones de uso. Además, la personalización de estilos mediante clases CSS permite adaptar el componente a necesidades específicas sin alterar la funcionalidad.

Etiquetas: MudBlazor Blazor RadioGroup GestiónEstado ComponentesRazor

Publicado el 6-22 03:35