Tab
Contenedor con pestañas que alterna entre paneles. Compón <r-tabs> como contenedor con uno o más paneles <r-tab> dentro.
Úsalo cuando necesites un contenedor con pestañas que alterne entre paneles. Compón
<r-tabs>con hijos<r-tab>, cada uno con sulabelde cabecera y el cuerpo del panel.
Inicio rápido
Uso básico
<r-tabs>
<r-tab label="tab1">11111</r-tab>
<r-tab label="tab2">22222</r-tab>
<r-tab label="tab3">33333</r-tab>
</r-tabs>Cada <r-tab> se convierte en un panel; su label se dibuja como el botón de la cabecera y su contenido asignado es el cuerpo del panel. Al elegir una cabecera, el panel correspondiente se desliza a la vista.
Referencia de la API
Propiedades de r-tabs
El contenedor. Alberga la fila de cabeceras, el indicador de activo y el área de contenido de los paneles.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
active | string | primera pestaña habilitada | El r-key de la pestaña activa |
type | string | 'flat' | Estilo de cabecera: flat, line |
align | string | 'start' | Alineación de la cabecera: start, center, end |
effect | boolean | false | Activa la onda en los botones de cabecera y oculta el indicador deslizante |
sheet | string | '' | Texto CSS inyectado en el shadow DOM |
El setter de
activeacepta una cadena de clave; asignarlenullquita el atributo. Cuando no hayactive, al montar se selecciona la primera pestaña no deshabilitada.
Propiedades de r-tab
Un solo panel. Sus atributos los lee el <r-tabs> padre para construir el botón de cabecera correspondiente.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
label | string | '' | Texto mostrado en la cabecera de la pestaña |
r-key | string | índice | Identificador único dentro de un <r-tabs>; se coteja con active |
icon | string | — | Nombre de r-icon mostrado antes de la etiqueta |
iconSize | string | — | Tamaño del icono de la cabecera |
disabled | boolean | false | Vuelve la pestaña no seleccionable |
effect | boolean | — | Efecto de onda en la cabecera (normalmente lo pone el effect padre) |
sheet | string | '' | Texto CSS inyectado en el shadow DOM |
El getter/setter de la propiedad
keylee y escribe el atributor-key(se evita el nombre simplekeyporque es un campo reservado). Ponlabelyr-keyantes de que el elemento se conecte: los cambios en esos dos atributos no se vuelven a procesar una vez construidas las cabeceras.
Estilo de cabecera type
flat (por defecto) muestra un subrayado deslizante como indicador; line dibuja cabeceras con borde.
<r-tabs type="flat">
<r-tab label="tab1">11111</r-tab>
<r-tab label="tab2">22222</r-tab>
<r-tab label="tab3">33333</r-tab>
</r-tabs>
<r-tabs type="line">
<r-tab label="tab1">11111</r-tab>
<r-tab label="tab2">22222</r-tab>
<r-tab label="tab3">33333</r-tab>
</r-tabs>Alineación de la cabecera align
Alinea la fila de cabeceras. Por defecto, start.
<r-tabs type="line" align="start"> ... </r-tabs>
<r-tabs type="line" align="center"> ... </r-tabs>
<r-tabs type="line" align="end"> ... </r-tabs>Pestaña activa: active y r-key
r-keyes un atributo de<r-tab>que da a cada panel una identidad estable dentro del mismo<r-tabs>. Si se omite, toma el índice del panel.activees un atributo de<r-tabs>que elige la pestaña activa inicial: se muestra el panel cuyor-keycoincide conactive.
Sin claves explícitas, active coincide con el índice empezando en cero:
<r-tabs active="1">
<r-tab label="tab1">11111</r-tab>
<r-tab label="tab2">22222</r-tab>
<r-tab label="tab3">33333</r-tab>
</r-tabs>Con valores r-key explícitos (los paneles sin clave recurren a su índice):
<r-tabs active="c">
<r-tab label="tab1" r-key="a">11111</r-tab>
<r-tab label="tab2" r-key="b">22222</r-tab>
<r-tab label="tab3" r-key="c">33333</r-tab>
<r-tab label="tab4">4</r-tab>
</r-tabs>Todos los
r-keydentro de un mismo<r-tabs>deben ser únicos: claves duplicadas o ausentes en algunos paneles lanzan un error mientras se construyen las cabeceras.
Panel deshabilitado disabled
Un <r-tab> deshabilitado no se puede seleccionar y se salta al elegir la pestaña activa por defecto.
<r-tabs active="c">
<r-tab label="tab1" r-key="a" disabled>11111</r-tab>
<r-tab label="tab2" r-key="b">22222</r-tab>
<r-tab label="tab3" r-key="c">33333</r-tab>
<r-tab label="tab4">4</r-tab>
</r-tabs>Icono de la cabecera: icon y iconSize
<r-tab> acepta un atributo icon (un nombre de r-icon) que se dibuja antes de la etiqueta; iconSize fija su tamaño.
<r-tabs>
<r-tab label="tab1" icon="edit">11111</r-tab>
<r-tab label="tab2" icon="delete" iconSize="16">22222</r-tab>
<r-tab label="tab3">33333</r-tab>
</r-tabs>Efecto de onda effect
Pon effect en <r-tabs> para activar la onda al hacer clic en los botones de cabecera. Con effect activo, el subrayado deslizante queda oculto.
<r-tabs effect="true">
<r-tab label="tab1">11111</r-tab>
<r-tab label="tab2">22222</r-tab>
<r-tab label="tab3">33333</r-tab>
</r-tabs>Slots
| Elemento | Slot | Descripción |
|---|---|---|
r-tabs | (por defecto) | Acepta los paneles <r-tab> |
r-tab | (por defecto) | El cuerpo del panel, mostrado cuando la pestaña está activa |
Parts CSS
r-tabs expone:
| Part | Descripción |
|---|---|
tabs | Envoltorio raíz |
header | Envoltorio de la fila de cabeceras |
nav | La tablist que contiene los elementos de cabecera |
indicator | La línea de subrayado deslizante |
content | Ventana del contenido de los paneles |
content-wrap | La pista deslizante que sostiene los paneles |
r-tab expone:
| Part | Descripción |
|---|---|
content | El slot de contenido del panel |
Eventos
change
<r-tabs> despacha un CustomEvent change cuando cambia un atributo observado, sobre todo al cambiar de pestaña activa. event.detail.active es la clave activa actual (el r-key del <r-tab> seleccionado, o su índice si no hay r-key).
const tabs = document.createElement('r-tabs');
tabs.addEventListener('change', (e) => {
console.log('pestaña activa:', e.detail.active);
});
tabbar.append(tabs);<r-tab> no despacha ningún evento personalizado.
Estilos
<r-tabs> expone 10 propiedades personalizadas de CSS propias, además de los tokens semánticos que lee del tema. Define una allí donde se herede: :root, un contenedor o el propio elemento:
r-tabs {
--ran-tab-content-background: var(--ran-color-bg-subtle);
}Partes: content · content-wrap · header · indicator · nav · tabs
La lista completa está en tokens de estilo; cuál elegir lo explica el sistema de diseño.
Buenas prácticas
- Identidad estable: da a cada
<r-tab>unr-keyúnico y gobierna la selección conactiveen<r-tabs>, en vez de fiarte de los índices posicionales. - Elección de estilo: usa
type="line"para una tira de pestañas con borde, al estilo documento;type="flat"(por defecto) para el subrayado deslizante mínimo. - Alineación: usa
align="center"oalign="end"para recolocar la fila de cabeceras en contenedores anchos. - Paneles deshabilitados: marca con
disabledlos paneles no disponibles; se saltan tanto en los clics como en la selección por defecto. - Navegación con teclado: la fila de cabeceras es una tablist WAI-ARIA: las flechas mueven entre pestañas (con
Inicio/Fin) y solo la pestaña activa entra en el orden de tabulación.