SegmentedControl
Un grupo compacto de segmentos para elegir una vista u opción.
Uso
<script>
import { Label, SegmentedControl, SegmentedControlItem } from 'fluentui-svelte';
let selectedValue = $state('day');
</script>
<Label label="View">
<SegmentedControl name="view" bind:selectedValue>
<SegmentedControlItem value="day">Day</SegmentedControlItem>
<SegmentedControlItem value="week">Week</SegmentedControlItem>
<SegmentedControlItem value="month">Month</SegmentedControlItem>
</SegmentedControl>
</Label> Las flechas mueven el foco y Espacio o Enter seleccionan. Activa selectOnFocus para seleccionar al navegar. Tab entra en el radio seleccionado. Usa Label, aria-label o aria-labelledby para nombrar el grupo.
Texto, iconos y contenido mixto
Usa etiquetas breves, iconos con nombres accesibles o iconos junto al texto. La prop icon acepta un componente de icono Fluent o un snippet de Svelte. Cada opción necesita un valor único dentro del grupo.
Anchos iguales o ajustados al contenido
Los segmentos tienen el mismo ancho por defecto. Establece equalWidth en false para ajustar cada segmento a su contenido.
Tamaños
Elige small para filas compactas, medium para controles estándar o large cuando hay más espacio. Todos los segmentos del grupo comparten el tamaño.
Indicador de selección
Activa hideIndicator para ocultar el indicador de selección.
Selección al enfocar
Las flechas mueven el foco sin cambiar la selección. Activa selectOnFocus para seleccionar el segmento enfocado.
Opciones y grupos deshabilitados
Deshabilita una opción para mantenerla visible cuando no está disponible, o deshabilita todo el grupo. Los radios deshabilitados se omiten en la navegación por teclado y no participan en FormData ni en la validación.
Uso de Label
Envuelve SegmentedControl en Label para nombrar el grupo automáticamente. Cada opción conserva su texto o aria-label. Un aria-label o aria-labelledby explícito en el grupo tiene prioridad. Label muestra la marca visual de campo obligatorio; establece required en SegmentedControl para activar la validación.
Envío, validación y reinicio
Establece name con el nombre del campo que espera el formulario. Solo se envía el radio marcado y habilitado. required impide el envío hasta seleccionar una opción. Reiniciar restaura la selección que tenía el grupo al crearse, incluida una selección inicialmente vacía, y actualiza bind:selectedValue.
Formularios externos
Establece form con el id de un formulario situado en otra parte de la página. Todos los radios pertenecen a ese formulario y participan en su envío, validación y reinicio.
Enlace y eventos de cambio
Enlaza selectedValue para leer o actualizar la selección. onSelectionChange recibe el evento change nativo y el nuevo valor de texto. Seleccionar la misma opción, actualizar el enlace desde código o reiniciar el formulario no ejecuta el callback.
SegmentedControl
| Name | Type | Default | Description |
|---|---|---|---|
ref bindable | HTMLDivElement | null | La referencia DOM del control. | |
selectedValue bindable | string | El valor del elemento seleccionado. Un valor vacío deja todos los elementos sin seleccionar. | |
name | string | El nombre de campo que comparten todos los radios. Por defecto se genera un nombre único. | |
form | string | El id del formulario al que pertenecen los radios cuando están fuera de ese formulario. | |
required | boolean | false | Exige seleccionar una opción antes de enviar el formulario. |
validationMessage | string | Mensaje de validación nativo personalizado cuando falta una selección obligatoria. | |
hideIndicator | boolean | false | Oculta el indicador de acento debajo del segmento seleccionado. |
selectOnFocus | boolean | false | Selecciona el segmento enfocado al navegar con las flechas. |
onSelectionChange | (event: Event, value: string) => void | Se ejecuta cuando la interacción del usuario cambia la selección. | |
size | 'small' | 'medium' | 'large' | 'medium' | El tamaño de cada segmento. |
equalWidth | boolean | true | Asigna el mismo ancho a todos los segmentos. Desactívalo para ajustar cada segmento a su contenido. |
disabled | boolean | false | Deshabilita todos los segmentos. |
disableTabspot | boolean | false | Desactiva la navegación por teclado de tabspot. |
| HTML Attributes |
SegmentedControlItem
| Name | Type | Default | Description |
|---|---|---|---|
ref bindable | HTMLInputElement | null | La referencia DOM del radio nativo. | |
value | string | Un valor único que identifica este segmento dentro del control. | |
icon | Snippet | Component | Un icono opcional. Asigna un nombre accesible con aria-label a los elementos que solo tienen icono. | |
disabled | boolean | false | Deshabilita este segmento. |
children | Snippet | El contenido de la etiqueta del segmento. | |
| HTML Attributes |

