Descripción general del componente Angular Tabs

    Ignite UI for Angular Tabs es un componente de la interfaz de usuario con todas las funciones que tiene el propósito principal de organizar y agrupar el contenido relacionado en una sola vista con pestañas, ahorrando así espacio y haciendo que el contenido sea más comprensible. Incluye diferentes características como animaciones, plantillas, opciones de personalización y otras.

    Las pestañas en Angular son extremadamente útiles cuando se está creando una página web con mucho contenido que debe ajustarse a categorías y mostrarse de manera concisa y eficiente en el espacio.

    Eligx-tabs componente en Ignite UI for Angular se utiliza para organizar o cambiar entre conjuntos de datos similares. Funciona como un wrapperigx-tab-item para el cual representan respectivamente el contenedor de los datos y la cabecera de tabulación. El componente Angular Tabs coloca las pestañas en la parte superior y permite desplazarse cuando hay varios elementos de pestañas en pantalla.

    Angular Tabs Example

    Este es un ejemplo básico de Angular pestañas anidadas donde tenemos una pestaña dentro de otra donde solo se puede ver una vista a la vez. Usando pestañas anidadas en Angular, podemos mostrar la información de una manera mejor y más estructurada.

    Getting Started with Ignite UI for Angular Tabs

    Para comenzar con el componente Ignite UI for Angular Tabs, primero debe instalar Ignite UI for Angular. En una aplicación Angular existente, escriba el siguiente comando:

    ng add igniteui-angular
    

    Para obtener una introducción completa al Ignite UI for Angular, lea el tema de introducción.

    El siguiente paso es importarlosIgxTabsModule en tu archivo app.module.ts.

    // app.module.ts
    
    ...
    import { IgxTabsModule } from 'igniteui-angular/tabs';
    // import { IgxTabsModule } from '@infragistics/igniteui-angular'; for licensed package
    
    @NgModule({
        ...
        imports: [..., IgxTabsModule],
        ...
    })
    export class AppModule {}
    

    Alternativamente,16.0.0 puedes importarlosIgxTabsComponent como una dependencia independiente, o usar elIGX_TABS_DIRECTIVES token para importar el componente y todos sus componentes y directivas de soporte.

    // home.component.ts
    
    import { IGX_TABS_DIRECTIVES } from 'igniteui-angular/tabs';
    // import { IGX_TABS_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
    
    @Component({
        selector: 'app-home',
        template: `
        <igx-tabs>
          <igx-tab-item>
            <igx-tab-header>
              <span igxTabHeaderLabel>Tab 1</span>
            </igx-tab-header>
            <igx-tab-content>
              This is Tab 1 content.
            </igx-tab-content>
          </igx-tab-item>
          <igx-tab-item>
            <igx-tab-header>
              <span igxTabHeaderLabel>Tab 2</span>
            </igx-tab-header>
            <igx-tab-content>
              This is Tab 2 content.
            </igx-tab-content>
          </igx-tab-item>
        </igx-tabs>
        `,
        styleUrls: ['home.component.scss'],
        standalone: true,
        imports: [IGX_TABS_DIRECTIVES]
        /* or imports: [IgxTabsComponent, IgxTabItemComponent, IgxTabHeaderComponent, IgxTabContentComponent, IgxTabHeaderLabelDirective] */
    })
    export class HomeComponent {}
    

    Ahora que tienes importado el módulo o directivas Ignite UI for Angular Tabs, puedes empezar a usar eligx-tabs componente.

    Using the Angular Tabs

    Establecemos el encabezado de Angular Pestañas proporcionando contenido a.igx-tab-header Para establecer el nombre de la pestaña simplemente añadimos un span conigxTabHeaderLabel directiva. Cualquier contenido que aparezca como contenido de un elemento de pestaña debe añadirse entreigx-tab-content etiquetas.

    <igx-tabs>
      <igx-tab-item>
        <igx-tab-header>
          <span igxTabHeaderLabel>Tab 1</span>
        </igx-tab-header>
        <igx-tab-content>
          This is Tab 1 content.
        </igx-tab-content>
      </igx-tab-item>
      <igx-tab-item>
        <igx-tab-header>
          <span igxTabHeaderLabel>Tab 2</span>
        </igx-tab-header>
        <igx-tab-content>
          This is Tab 2 content.
        </igx-tab-content>
      </igx-tab-item>
      <igx-tab-item>
        <igx-tab-header>
          <span igxTabHeaderLabel>Tab 3</span>
        </igx-tab-header>
        <igx-tab-content>
          This is Tab 3 content.
        </igx-tab-content>
      </igx-tab-item>
      <igx-tab-item>
        <igx-tab-header>
          <span igxTabHeaderLabel>Tab 4</span>
        </igx-tab-header>
        <igx-tab-content>
          This is Tab 4 content.
        </igx-tab-content>
      </igx-tab-item>
      <igx-tab-item>
        <igx-tab-header>
          <span igxTabHeaderLabel>Tab 5</span>
        </igx-tab-header>
        <igx-tab-content>
          This is Tab 5 content.
        </igx-tab-content>
      </igx-tab-item>
    </igx-tabs>
    

    Si la muestra está configurada correctamente, el resultado final debería verse así:

    Angular Tabs Alignment

    IgxTabs tabAlignmentLa propiedad de entrada controla cómo se posicionan y organizan las pestañas. Acepta cuatro valores diferentes: inicio, centro, fin y justificación.

    • Inicio (predeterminado): el ancho del encabezado de la pestaña depende del contenido (etiqueta, icono, ambos) y todas las pestañas tienen el mismo relleno. La primera pestaña está alineada con el lado izquierdo del contenedor de pestañas.
    • Centro: el ancho del encabezado de la pestaña depende del contenido y ocupa el centro del contenedor de pestañas. Si el espacio no es suficiente para todos los elementos, se muestran botones de desplazamiento.
    • Fin: el ancho del encabezado de la pestaña depende del contenido y todas las pestañas tienen el mismo relleno. La última pestaña está alineada con el lado derecho del contenedor de pestañas.
    • Justificar: todos los encabezados de las pestañas tienen el mismo ancho y se ajustan completamente al contenedor de pestañas. Si el espacio no es suficiente para todos los elementos, se muestran botones de desplazamiento.

    El ejemplo siguiente muestra cómo se alinean las pestañas al cambiar entretabAlignment valores de propiedades.

    Customizing Angular Tabs

    Modifiquemos las pestañas y hagámoslas más atractivas incluyendo iconos usando laigxTabHeaderIcon directiva. Eligx-tabs componente es compatible con los Materials Design Icons, por lo que será muy fácil adoptarlos en tu aplicación.

    Note

    Si no los has usadoigx-icon en tu solicitud hasta ahora, por favor asegúrate de importarlosIgxIconModule en la app.module.ts antes de continuar.

    Primero, añade los iconos de material en tu archivo 'styles.scss' en la carpeta principal de la aplicación. A continuación, añadeigx-icon conigxTabHeaderIcon conjunto de directivas, como hijo deigx-tab-header.

    // styles.scss
    
    ...
    @import url('https://fonts.googleapis.com/icon?family=Material+Icons');
    ...
    
    <igx-tabs>
      <igx-tab-item>
        <igx-tab-header>
            <igx-icon igxTabHeaderIcon>library_music</igx-icon>
            <span igxTabHeaderLabel>Albums</span>
        </igx-tab-header>
        <igx-tab-content>
            Albums
        </igx-tab-content>
      </igx-tab-item>
      <igx-tab-item>
        <igx-tab-header>
            <igx-icon igxTabHeaderIcon>favorite</igx-icon>
            <span igxTabHeaderLabel>Favorite</span>
        </igx-tab-header>
        <igx-tab-content>
            Favorite
        </igx-tab-content>
      </igx-tab-item>
      <igx-tab-item>
        <igx-tab-header>
            <igx-icon igxTabHeaderIcon>info</igx-icon>
            <span igxTabHeaderLabel>Details</span>
        </igx-tab-header>
        <igx-tab-content>
            Details
        </igx-tab-content>
      </igx-tab-item>
    </igx-tabs>
    
    

    Si el ejemplo está configurado correctamente, las pestañas deberían verse como en el siguiente ejemplo:

    Si no basta con establecer etiquetas e iconos, también puedes proporcionar tu propio contenido personalizado directamente entreigx-tab-header etiquetas.

    <igx-tabs>
      <igx-tab-item>
        <igx-tab-header>
          <!-- your custom tab content goes here -->
          <div>
            <img src="https://static.infragistics.com/marketing/Website/products/ignite-ui-landing/ignite-ui-logo.svg"
                 width="80px" height="40px">
          </div>
        </igx-tab-header>
        <igx-tab-content>
          <h1>IgniteUI Rocks!</h1>
        </igx-tab-content>
      </igx-tab-item>
    </igx-tabs>
    

    También puedes añadir el prefijo y sufijo personalizado de tu propio encabezado de pestañas simplemente usandoigxPrefix las directivas de yigxSuffix. El ejemplo siguiente muestra cómo añadir una pestaña con contenido de encabezado personalizado y prefijo/sufijo.

    Integration With Router Outlet Container

    Aunque eligx-tabs componente está pensado para usarse como una lista de pestañas con contenido especificado para cada elemento de la pestaña, puede haber casos en los que necesites definir elementos de pestaña donde el contenido sea independiente del contenido de la pestaña.

    Al definir elementos de tabulación tienes la capacidad de aplicarles directivas. Por ejemplo, puedes usar esta funcionalidad para navegar entre vistas usando el Angular Router. El siguiente ejemplo mostrará cómo configurar eligx-tabs componente para que conmute entre tres componentes en un mismo router-enchufe.

    Para empezar necesitamos un componente para contener nuestroigx-tabs componente y tres componentes de vista con contenido para demostración. Para simplificar, los componentes de la vista tienen plantillas muy cortas.

    import { Component } from '@angular/core';
    
    @Component({
        selector: 'app-tabs-routing',
        styleUrls: ['tabs-routing.component.scss'],
        templateUrl: 'tabs-routing.component.html'
    })
    export class TabsRoutingComponent { }
    
    @Component({
        template: '<p>Tab 1 Content</p>'
    })
    export class TabsRoutingView1Component { }
    
    @Component({
        template: '<p>Tab 2 Content</p>'
    })
    export class TabsRoutingView2Component { }
    
    @Component({
        template: '<p>Tab 3 Content</p>'
    })
    export class TabsRoutingView3Component { }
    

    A continuación, creamos los mapeos de navegación apropiados en elapp-routing.module.ts archivo:

    import { RouterModule, Routes } from '@angular/router';
    
    import {
        TabsRoutingComponent,
        TabsRoutingView1Component,
        TabsRoutingView2Component,
        TabsRoutingView3Component
    } from './tabs-routing.component';
    
    ...
    
    const routes: Routes = [
      {
        path: '',
        pathMatch: 'full',
        redirectTo: '/tabs-routing'
      },
      {
        path: 'tabs-routing',
        component: TabsRoutingComponent,
        children: [
            { path: 'view1', component: TabsRoutingView1Component },
            { path: 'view2', component: TabsRoutingView2Component },
            { path: 'view3', component: TabsRoutingView3Component },
          ]
      }
    ];
    
    @NgModule({
      exports: [RouterModule],
      imports: [RouterModule.forRoot(appRoutes)]
    })
    export class AppRoutingModule { }
    

    Ahora que tenemos todas las rutas de navegación configuradas, necesitamos declarar eligx-tabs componente y configurarlo para el enrutamiento. Asegúrate de añadir una salida router para renderizar los componentes de la vista.

    <!-- tabs-routing.component.html -->
    
    <igx-tabs #tabs1>
      <igx-tab-item
          routerLinkActive
          #rla1="routerLinkActive"
          [selected]="rla1.isActive"
      >
          <igx-tab-header routerLink="view1">
              <span igxTabHeaderLabel>Tab 1</span>
          </igx-tab-header>
      </igx-tab-item>
      <igx-tab-item
          routerLinkActive
          #rla2="routerLinkActive"
          [selected]="rla2.isActive"
      >
          <igx-tab-header routerLink="view2">
              <span igxTabHeaderLabel>Tab 2</span>
          </igx-tab-header>
      </igx-tab-item>
      <igx-tab-item
          routerLinkActive
          #rla3="routerLinkActive"
          [selected]="rla3.isActive"
      >
          <igx-tab-header routerLink="view3">
              <span igxTabHeaderLabel>Tab 3</span>
          </igx-tab-header>
      </igx-tab-item>
    </igx-tabs>
    
    <router-outlet></router-outlet>
    

    El código anterior crea unigx-tabs componente con tres elementos de pestaña. La cabecera de cada elemento de la pestaña tiene aplicada laRouterLink directiva, que se utiliza para especificar el enlace de enrutamiento utilizado para la navegación. Si alguno de los enlaces se activa, el elemento de tabulación correspondiente tendráselected su propiedad establecida debido a la vinculación a laRouterLinkActive propiedad deisActive la directiva. De este modo, el elemento de pestaña seleccionado siempre estará sincronizado con la ruta actual de la URL.

    Note

    Por favor, ten en cuenta que la directiva RouterLink está configurada como eligx-tab-header, no directamente en eligx-tab-item.

    Styles

    Tabs Theme Property Map

    Al modificar una propiedad principal, todas las propiedades dependientes relacionadas se actualizan automáticamente para reflejar el cambio:

    Propiedad principal Propiedad dependiente Descripción
    $item antecedentes
    $item-activo-antecedentes El color usado para el fondo de la pestaña activa/enfocada.
    $item-text-colorEl color usado para el texto de la tabulación.
    $item-icono-colorEl color que se usa para el icono de pestañas.
    $item-hover-backgroundEl fondo usado para las pestañas al pasar el cursor.
    $indicator colorEl color utilizado para el indicador de pestaña activa.
    $button-antecedentesEl color que se usa para el fondo de los botones.
    $button-hover-fondoEl color que se usa para el fondo del botón al pasar el cursor.
    $item-activo-antecedentes
    $item-icono-activo-color El color usado para el icono de la pestaña activa.
    $item-activo-colorEl color usado para el texto activo de las pestañas.
    $tab-color onduladoEl color que se usa para el fondo de los botones.
    $item-text-color
    $item-hover-color El color de texto usado para las pestañas al pasar el cursor si no se proporciona '$item-hover-background'
    $item-icono-colorEl color que se utiliza para el icono de la pestaña si no se proporciona '$item-fondo'
    $item-activo-colorEl color que se usa para el texto de las pestañas activas si no se proporciona '$item-activo-fondo'
    $indicator colorEl color utilizado para el indicador de pestaña activa si no se proporciona '$item-fondo'
    $item-icono-color
    $item-color-icono-flotante El color que se usa para el icono de la pestaña al pasar el cursor.
    $item-icono-activo-colorEl color usado para el icono de la pestaña activa.
    $indicator colorEl color utilizado para el indicador de pestaña activa.
    $button fondo
    $button-hover-fondo El color que se usa para el fondo del botón al pasar el cursor.
    $button colorEl color usado para el icono del botón/color del texto.
    $button color
    $button-desactivado-color El color usado para el icono/texto del botón desactivado.
    $button-color onduladoEl color que se usa para el fondo del botón al pasar el cursor.
    $button-hover-fondo $button-hover-color El color que se usa para el icono del botón/color del texto al pasar el cursor.
    Propiedad principal Propiedad dependiente Descripción
    $item antecedentes
    $item-activo-antecedentes El color usado para el fondo de la pestaña activa/enfocada.
    $item-text-colorEl color usado para el texto de la tabulación.
    $item-icono-colorEl color que se usa para el icono de pestañas.
    $item-hover-backgroundEl fondo usado para las pestañas al pasar el cursor.
    $indicator colorEl color utilizado para el indicador de pestaña activa.
    $button-antecedentesEl color que se usa para el fondo de los botones.
    $button-hover-fondoEl color que se usa para el fondo del botón al pasar el cursor.
    $item-activo-antecedentes
    $item-icono-activo-color El color usado para el icono de la pestaña activa.
    $item-activo-colorEl color usado para el texto activo de las pestañas.
    $tab-color onduladoEl color ondulado para la interacción con la pestaña.
    $item-text-color
    $item-hover-color El color de texto usado para las pestañas al pasar el cursor si no se proporciona '$item-hover-background'
    $item-icono-colorEl color que se utiliza para el icono de la pestaña si no se proporciona '$item-fondo'
    $item-activo-colorEl color que se usa para el texto de las pestañas activas si no se proporciona '$item-activo-fondo'
    $indicator colorEl color utilizado para el indicador de pestaña activa si no se proporciona '$item-fondo'
    $item-icono-color
    $item-color-icono-flotante El color que se usa para el icono de la pestaña al pasar el cursor.
    $item-icono-activo-colorEl color usado para el icono de la pestaña activa.
    $indicator colorEl color utilizado para el indicador de pestaña activa.
    $button fondo
    $button-hover-fondo El color que se usa para el fondo del botón al pasar el cursor.
    $button colorEl color usado para el icono del botón/color del texto.
    $button color
    $button-desactivado-color El color usado para el icono/texto del botón desactivado.
    $button-color onduladoEl color que se usa para el fondo del botón al pasar el cursor.
    $button-hover-fondo $button-hover-color El color que se usa para el icono del botón/color del texto al pasar el cursor.
    Propiedad principal Propiedad dependiente Descripción
    $item antecedentes
    $item-activo-antecedentes El color usado para el fondo de la pestaña activa/enfocada.
    $item-text-colorEl color usado para el texto de la tabulación.
    $item-icono-colorEl color que se usa para el icono de pestañas.
    $item-hover-backgroundEl fondo usado para las pestañas al pasar el cursor.
    $indicator colorEl color utilizado para el indicador de pestaña activa.
    $button-antecedentesEl color que se usa para el fondo de los botones.
    $button-hover-fondoEl color que se usa para el fondo del botón al pasar el cursor.
    $border colorEl color del borde de las pestañas.
    $item-activo-antecedentes
    $item-icono-activo-color El color usado para el icono de la pestaña activa.
    $item-activo-colorEl color usado para el texto activo de las pestañas.
    $tab-color onduladoEl color que se usa para el fondo de los botones.
    $item-text-color
    $item-hover-color El color de texto usado para las pestañas al pasar el cursor si no se proporciona '$item-hover-background'
    $item-icono-colorEl color que se utiliza para el icono de la pestaña si no se proporciona '$item-fondo'
    $button colorEl color utilizado para el icono del botón/color del texto si no se proporciona '$button-fondo' (no material)
    $item-icono-color
    $item-color-icono-flotante El color que se usa para el icono de la pestaña al pasar el cursor si no se proporciona '$item-hover-background'
    $item-text-colorEl color utilizado para el texto de la tabulación si no se proporciona '$item-fondo'
    $button fondo
    $button-hover-fondo El color que se usa para el fondo del botón al pasar el cursor.
    $button colorEl color usado para el icono del botón/color del texto.
    $button color
    $button-hover-color El color utilizado para el icono del botón/color del texto al pasar el cursor si no se proporciona '$button-fondo'
    $button-desactivado-colorEl color usado para el icono/texto del botón desactivado.
    $button-color onduladoEl color que se usa para el fondo del botón al pasar el cursor.
    $button-hover-fondo $button-hover-color El color que se usa para el icono del botón/color del texto al pasar el cursor.
    Propiedad principal Propiedad dependiente Descripción
    $item antecedentes
    $item-activo-antecedentes El color usado para el fondo de la pestaña activa/enfocada.
    $item-text-colorEl color usado para el texto de la tabulación.
    $item-icono-colorEl color que se usa para el icono de pestañas.
    $item-hover-backgroundEl fondo usado para las pestañas al pasar el cursor.
    $indicator colorEl color utilizado para el indicador de pestaña activa.
    $button-antecedentesEl color que se usa para el fondo de los botones.
    $button-hover-fondoEl color que se usa para el fondo del botón al pasar el cursor.
    $item-activo-antecedentes
    $item-icono-activo-color El color usado para el icono de la pestaña activa.
    $item-activo-colorEl color usado para el texto activo de las pestañas.
    $tab-color onduladoEl color que se usa para el fondo de los botones.
    $item-text-color
    $item-hover-color El color de texto usado para las pestañas al pasar el cursor si no se proporciona '$item-hover-background'
    $item-icono-colorEl color que se utiliza para el icono de la pestaña si no se proporciona '$item-fondo'
    $item-activo-colorEl color que se usa para el texto de las pestañas activas si no se proporciona '$item-activo-fondo'
    $indicator colorEl color utilizado para el indicador de pestaña activa si no se proporciona '$item-fondo'
    $item-icono-color
    $item-color-icono-flotante El color que se usa para el icono de la pestaña al pasar el cursor.
    $item-icono-activo-colorEl color usado para el icono de la pestaña activa.
    $indicator colorEl color utilizado para el indicador de pestaña activa.
    $button fondo
    $button-hover-fondo El color que se usa para el fondo del botón al pasar el cursor.
    $button colorEl color usado para el icono del botón/color del texto.
    $button color
    $button-desactivado-color El color usado para el icono/texto del botón desactivado.
    $button-color onduladoEl color que se usa para el fondo del botón al pasar el cursor.
    $button-hover-fondo $button-hover-color El color que se usa para el icono del botón/color del texto al pasar el cursor.

    Para comenzar a diseñar las pestañas, necesitamos importar el módulo de temas, donde se encuentran todas las funciones del tema y los mixins de componentes:

    @use "igniteui-angular/theming" as *;
    
    // IMPORTANT: Prior to Ignite UI for Angular version 13 use:
    // @import '~igniteui-angular/lib/core/styles/themes/index';
    

    Siguiendo el enfoque más sencillo, creamos un nuevo tema que amplía eltabs-theme. Al pasar solo unos pocos parámetros base —como$item-background y$item-active-color— puedes estilizar tus pestañas con un esfuerzo mínimo. El tema generará automáticamente todos los colores de fondo y primer plano necesarios para los distintos estados de interacción.

    Por supuesto, puede anular cualquier parámetro adicional para ajustar aún más la apariencia.

    $dark-tabs: tabs-theme(
      $item-background: #292826,
      $item-active-color: #F4D45C,
    );
    
    Note

    En lugar de codificar los valores de color como acabamos de hacer, podemos lograr mayor flexibilidad en cuanto a colores usando laspalette funciones ycolor. Por favor, consulta elPalettes tema para obtener una guía detallada sobre cómo utilizarlos.

    Si echamos un vistazo,tabs-theme notaremos que hay aún más propiedades disponibles para diseñar nuestras pestañas.

    Note

    Para aplicar estilo a cualquier componente utilizado como parte del contenido de una pestaña, se deben crear temas adicionales específicos para el componente respectivo.

    El último paso es incluir el tema del componente en nuestra aplicación.

    @include css-vars($dark-tabs);
    

    Demo

    Styling with Tailwind

    Puedes diseñar las pestañas usando nuestras clases utilitarias personalizadas de Tailwind. Asegúrate de configurar primero a Tailwind.

    Junto con la importación de viento de cola en su hoja de estilo global, puede aplicar las utilidades de tema deseadas de la siguiente manera:

    @import "tailwindcss";
    ...
    @use 'igniteui-theming/tailwind/utilities/material.css';
    

    El archivo de utilidad incluye variantes tantolight comodark de tema.

    • Usalight-* clases para el tema ligero.
    • Usadark-* clases para el tema oscuro.
    • Añadir el nombre del componente después del prefijo, por ejemplo, ,light-tabs,dark-tabs.

    Una vez aplicadas, estas clases permiten cálculos dinámicos de temas. Desde ahí, puedes anular las variables CSS generadas usandoarbitrary properties. Después de los dos puntos, proporciona cualquier formato de color CSS válido (HEX, variable CSS, RGB, etc.).

    Puedes encontrar la lista completa de propiedades en el Tema IgxTabs. La sintaxis es la siguiente:

    <igx-tabs
      class="!light-tabs
      ![--item-background:#011627]
      ![--item-active-icon-color:#FF8040]
      ![--item-active-color:#FF8040]">
      ...
    </igx-tabs>
    
    Note

    El signo de exclamación(!) es necesario para asegurar que la clase de utilidad tenga prioridad. Tailwind aplica estilos en capas y, sin marcar estos estilos como importantes, serán anulados por el tema predeterminado del componente.

    Al final, tus pestañas deberían verse así:

    API References

    Theming Dependencies

    Additional Resources

    Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.