enes

TabView

TabView dispone un conjunto de pestañas como una tira, con la forma que un navegador le da a las pestañas de sus documentos. Cada pestaña puede llevar un icono y un botón de cierre, y un botón de pestaña nueva puede situarse al final de la tira.

The document you are working on.

La tira se ocupa de la selección y de nada más. Lo que abre una pestaña lo renderizas tú, donde corresponda en la página, así que una pestaña puede abrir un panel debajo, cambiar una región en otro sitio o dirigir una ruta.

Para crear una tira de pestañas, necesitarás usar los siguientes componentes:

  • TabView: El componente raíz que crea el contexto que lee cada pestaña: cuál está seleccionada, si las pestañas se cierran y cómo toman su ancho. Renderiza el tablist y, opcionalmente, el botón de pestaña nueva.
  • TabViewTab: Una sola pestaña de la tira. Informa de su propia selección y puede llevar un icono y un botón de cierre.

Uso

Una tira de pestañas espera un value en cada pestaña y un activeTab con el que compararlo. Vincula activeTab para seguir la selección y renderiza tú mismo lo que abre la pestaña seleccionada.

<script>
	import { TabView, TabViewTab } from 'fluentui-svelte';

	let activeTab = $state('document');
</script>

<TabView bind:activeTab listAttributes={{ 'aria-label': 'Workspaces' }}>
	<TabViewTab id="tab-document" value="document">Document</TabViewTab>
	<TabViewTab id="tab-mail" value="mail">Mail</TabViewTab>
</TabView>

{#if activeTab === 'document'}
	<div role="tabpanel" aria-labelledby="tab-document">The document you are working on.</div>
{:else}
	<div role="tabpanel" aria-labelledby="tab-mail">Everything that landed in your inbox.</div>
{/if}

Cerrar pestañas

closable le da a cada pestaña un botón de cierre, y una pestaña concreta puede activarlo o renunciar a él por su cuenta. La tira nunca elimina una pestaña: las pestañas son tu marcado, así que onTabClose te devuelve el valor y deja en tus manos la eliminación — y qué pestaña toma el relevo.

Botón de pestaña nueva

showNewTabButton añade un botón al final de la tira, fuera del tablist para que nunca se lea como una pestaña. onNewTab se dispara cuando se activa.

Ancho de las pestañas

tabWidthMode decide cómo toman su ancho las pestañas: equal reparte la tira por igual, size-to-content ajusta cada pestaña a su propia etiqueta y compact reduce a su icono cada pestaña en reposo y solo despliega la seleccionada.

Deshabilitado

Una pestaña deshabilitada no puede seleccionarse, y las flechas pasan por encima en lugar de detenerse en ella.

Propiedades del componente (TabView)

NameTypeDefaultDescription
ref bindableHTMLDivElement | nullLa referencia del DOM del elemento que envuelve la tira.
listRef bindableHTMLDivElement | nullLa referencia del DOM de la lista de pestañas.
listAttributesHTMLAttributesLos atributos que se aplican a la lista de pestañas, donde se definen el rol tablist y su etiqueta.
activeTab bindablestringEl valor de la pestaña seleccionada.
onTabChange(event: Event, value: string) => voidSe dispara cuando cambia la pestaña seleccionada.
closablebooleanfalseTodas las pestañas muestran un botón de cierre, salvo que la pestaña renuncie a él.
onTabClose(event: Event, value: string) => voidSe dispara cuando una pestaña pide cerrarse. Eliminarla queda en manos del consumidor.
showNewTabButtonbooleanfalseMuestra el botón que añade una pestaña nueva al final de la tira.
onNewTab(event: MouseEvent) => voidSe dispara cuando se activa el botón de pestaña nueva.
newTabButtonAttributesHTMLButtonAttributesLos atributos HTML que se aplican al botón para añadir una pestaña.
tabWidthMode'equal' | 'size-to-content' | 'compact''equal'Cómo toman su ancho las pestañas: repartiendo la tira por igual, ajustándose a su propio contenido o reduciéndose al icono en todas las pestañas menos la seleccionada.
disableTabspotbooleanfalseDeja la tira fuera de la gestión del foco de tabspot, para que conectes la tuya.
Element Attributes (div)

Propiedades del componente (TabViewTab)

NameTypeDefaultDescription
ref bindableHTMLDivElement | nullLa referencia del DOM del elemento de la pestaña.
valuestringEl valor que identifica a la pestaña. Por defecto, un id generado.
iconSnippet | ComponentEl icono que se muestra antes de la etiqueta.
closablebooleanMuestra el botón de cierre de la pestaña. Recurre al closable de la tira.
disabledbooleanDeshabilita la interacción del usuario.
onClose(event: Event, value: string) => voidSe dispara cuando la pestaña pide cerrarse, ya sea desde su botón de cierre o con la tecla Delete.
Element Attributes (div)

Navegación por teclado

La tira es una sola parada de tabulación. ArrowLeft y ArrowRight recorren las pestañas, Home y End saltan a los extremos, Enter y Space seleccionan la pestaña enfocada y Delete la cierra cuando es cerrable. disableTabspot te devuelve la gestión del foco.

Accesibilidad

La tira renderiza un tablist y cada pestaña un tab, así que dale nombre a la lista con el aria-label que pasas en listProps. Como eres tú quien renderiza lo que abre una pestaña, dale a ese elemento el rol tabpanel y apunta su aria-labelledby al id de su pestaña.

Editar este documento Ver como Markdown