Descripción general del componente de banner Angular

    Angular Banner Component proporciona una manera de mostrar fácilmente un mensaje destacado a los usuarios de su aplicación de una manera menos transitoria que una barra de bocadillos y menos molesta que un cuadro de diálogo. El banner también se puede configurar para mostrar botones de acción personalizados y un ícono.

    Angular Banner Example

    Getting Started with Ignite UI for Angular Banner

    Para comenzar con el componente Ignite UI for Angular Banner, 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 a la Ignite UI for Angular, lea el tema de introducción.

    El siguiente paso es importar IgxBannerModule en su archivo app.module.ts.

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

    Alternativamente, a partir de 16.0.0, puede importar IgxBannerComponent como una dependencia independiente o usar el token IGX_BANNER_DIRECTIVES para importar el componente y todos sus componentes y directivas de soporte.

    // home.component.ts
    
    ...
    import { IGX_BANNER_DIRECTIVES } from 'igniteui-angular';
    // import { IGX_BANNER_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
    
    @Component({
        selector: 'app-home',
        template: `
        <igx-banner>
            You are currently offline.
        </igx-banner>
        `,
        styleUrls: ['home.component.scss'],
        standalone: true,
        imports: [IGX_BANNER_DIRECTIVES]
        /* or imports: [IgxBannerComponent] */
    })
    export class HomeComponent {}
    

    Ahora que ha importado la Ignite UI for Angular Banner, puede comenzar con una configuración básica del componente igx-banner.

    Using the Angular Banner Component

    Show Banner

    Para mostrar el componente de banner, use su método open() y llámelo al hacer clic en un botón. El banner aparece en relación con el lugar donde se insertó el elemento en la plantilla de página, moviendo todo el resto del contenido. Por lo general, muestra contenido no intrusivo que requiere una mínima interacción del usuario para ser descartado.

    <!--banner.component.html-->
    
    <igx-icon (click)="connectionBanner.open()">refresh</igx-icon>
    ...
    <igx-banner #connectionBanner>
        You are currently offline.
    </igx-banner>
    
    
    Note

    El IgxBannerModule incluye un botón de banner predeterminado Dismiss, que cierra el banner.

    Examples

    IgxBannerComponent permite crear plantillas para su contenido sin dejar de cumplir lo más posible con las pautas de banner de Material Design.

    Changing the banner message

    Configurar el mensaje que se muestra en el banner es fácil: simplemente cambie el contenido que está pasando a la etiqueta igx-banner. El texto aparecerá en el área del banner especificada y el banner utilizará su plantilla predeterminada al mostrarlo. A continuación, cambiaremos el contenido de nuestro banner de muestra para que sea un poco más descriptivo:

    <!--banner.component.html-->
    <igx-banner #connectionBanner>
        You have lost connection to the internet. This app is offline.
    </igx-banner>
    

    Adding an icon

    Se puede mostrar un igx-icon en el banner pasándolo al contenido del banner. El icono siempre estará colocado al principio del mensaje del banner.

    Note

    Si se insertan varios elementos igx-icon como descendientes directos del banner, el banner intentará posicionarlos todos al principio. Se recomienda encarecidamente pasar solo un igx-icon directamente al banner.

    Para pasar un igx-icon a su banner, simplemente insértelo en el contenido del banner:

    <!--banner.component.html-->
    <igx-banner #connectionBanner>
        <igx-icon>signal_wifi_off</igx-icon>
        You have lost connection to the internet. This app is offline.
    </igx-banner>
    

    Si desea utilizar un igx-icon en su mensaje de banner, envuélvalo en una etiqueta span:

    <!--banner.component.html-->
    <igx-banner #connectionBanner>
        You have lost connection to the internet. This app is offline.
        <span>
            <igx-icon>signal_wifi_off</igx-icon>
        </span>
    </igx-banner>
    

    Changing the banner button

    IgxBannerModule expone una directiva para crear plantillas para los botones del banner: IgxBannerActionsDirective. Esta directiva le permite anular el botón de banner predeterminado (Dismiss) y agregar acciones personalizadas definidas por el usuario.

    <!--banner.component.html-->
    <igx-banner #connectionBanner>
        <igx-icon>signal_wifi_off</igx-icon>
        You have lost connection to the internet. This app is offline.
        <igx-banner-actions>
            <button igxButton igxRipple (click)="connectionBanner.toggle()">Toggle Banner</button>
        </igx-banner-actions>
    </igx-banner>
    

    Applying custom animations

    El componente de banner viene con la propiedad animationSettings que permite aplicar animaciones personalizadas de apertura y cierre. Los desarrolladores pueden elegir entre animaciones autodefinidas y aquellas de nuestra Animation suite. Los predeterminados, utilizados por el banner, son growVerIn para entrar y growVerOut para salir.

    Cambiemos las animaciones que usa nuestro banner, para que se deslice hacia adentro y hacia afuera:

    <!--banner.component.html-->
    <igx-banner #connectionBanner [animationSettings]="animationSettings">
        ...
    </igx-banner>
    
    // banner.component.ts
    import { IgxBannerComponent, slideInLeft, slideOutRight } from 'igniteui-angular'
    // import { IgxBannerComponent, slideInLeft, slideOutRight } from '@infragistics/igniteui-angular'; for licensed package
    ...
    export class MyBannerComponent {
        ...
        public animationSettings = {
            openAnimation: slideInLeft,
            closeAnimation: slideOutRight
        }
        ...
    }
    

    Binding to events

    El componente de banner emite eventos cuando cambia su estado: opening y opened se llaman cuando se muestra el banner (antes y después, respectivamente), mientras que closing y closed se emiten cuando se cierra el banner. Los eventos de ing (opening, closing) se pueden cancelar: utilizan la interfaz ICancelEventArgs y el objeto emitido tiene una propiedad cancel. Si la propiedad cancel se establece en verdadero, la acción final y el evento correspondientes no se activarán; por ejemplo, si cancelamos opening, el método de open del banner no finalizará y el banner no se mostrará.

    Para cancelar un evento, vincúlelo al objeto emitido y establezca su propiedad cancel en true.

    <!--banner.component.html-->
        <igx-banner #connectionBanner (opening)="handleOpen($event)">
            ...
        </igx-banner>
    
    // banner.component.ts
    ...
    export class MyBannerComponent {
        ...
        public handleOpen(event) {
            event.cancel = true;
        }
    }
    
    Note

    Si se aplican los cambios anteriores, el banner nunca se abrirá, ya que el evento de apertura siempre se cancela.

    Advanced Example

    Creemos un banner con dos botones personalizados: uno para descartar la notificación y otro para activar la conexión. Podemos pasar controladores de acciones personalizados usando el selector igx-banner-actions:

    <!--banner.component.html-->
    <igx-banner class="offline-banner" #connectionBanner [animationSettings]="animationSettings">
        <igx-icon>signal_wifi_off</igx-icon>
            You have lost connection to the internet. This app is offline.
        <igx-banner-actions>
            <button igxButton igxRipple (click)="connectionBanner.close()">Continue Offline</button>
            <button igxButton igxRipple (click)="wifiState = true">Turn On Wifi</button>
        </igx-banner-actions>
    </igx-banner>
    
    Note

    Según las pautas Material Design de Google, un banner debe tener un máximo de 2 botones presentes. IgxBannerComponent no limita explícitamente la cantidad de elementos bajo la etiqueta igx-banner-actions, pero se recomienda encarecidamente usar hasta 2 si desea cumplir con las pautas de diseño de materiales.

    La opción de descartar ( 'Continue Offline') no necesita más lógica, por lo que simplemente puede llamar al método close(). La acción de confirmación ( 'Turn On Wifi'), sin embargo, requiere cierta lógica adicional, por lo que tenemos que definirla en el componente. Luego, crearemos onNetworkStateChange Observable y nos suscribiremos. El último paso es llamar al método refreshBanner() en cada cambio, que alternará el banner dependiendo de wifiState.

    El banner también tendrá un ícono de WiFi en la barra de navegación. A medida que la suscripción se activa ante cualquier cambio de wifiState, el ícono no solo alternará el banner, sino que cambiará según el estado de la conexión:

    <!--banner.component.html-->
    <igx-navbar title="Gallery">
        <igx-icon (click)="wifiState = !wifiState">
            {{ wifiState ? 'signal_wifi_4_bar' : 'signal_wifi_off' }}
        </igx-icon>
    </igx-navbar>
    

    Finalmente agregaremos un toast, mostrando un mensaje sobre el estado del WiFi. Los resultados del banner con plantilla se pueden ver en la demostración a continuación:

    Estilismo

    Primero, para utilizar las funciones expuestas por el motor de temas, necesitamos importar el archivo de índice en nuestro archivo de estilo:

    @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 simple, creamos un nuevo tema que extiende el banner-theme y acepta los parámetros $banner-message-color, $banner-background y $banner-illustration-color.

    $custom-banner-theme: banner-theme(
        $banner-message-color: #151515,
        $banner-background: #dedede,
        $banner-illustration-color: #666666
    );
    

    Using CSS variables

    El último paso es pasar el tema del banner personalizado:

    @include css-vars($custom-banner-theme);
    

    Using mixins

    Para diseñar componentes para navegadores más antiguos, como Internet Explorer 11, tenemos que utilizar un enfoque diferente, ya que no admite variables CSS.

    Si el componente utiliza Emulated ViewEncapsulation, es necesario penetrate esta encapsulación usando::ng-deep. Para evitar que el tema personalizado se filtre a otros componentes, asegúrese de incluir el selector:host antes de::ng-deep:

    :host {
        ::ng-deep {
            // Pass the custom banner theme to the `igx-banner` mixin
            @include banner($custom-banner-theme);
        }
    }
    

    Using color palettes

    En lugar de codificar los valores de color, como acabamos de hacer, podemos lograr una mayor flexibilidad en términos de colores utilizando las funciones igx-palette e igx-color.

    La función igx-palette genera una paleta de colores basada en los colores primarios y secundarios que se pasan:

    $white-color: #dedede;
    $black-color: #151515;
    
    $light-banner-palette: palette($primary: $white-color, $secondary: $black-color);
    

    Y luego con igx-color podemos recuperar fácilmente el color de la paleta.

    $custom-banner-theme: banner-theme(
        $banner-message-color: color($light-banner-palette, "secondary", 400),
        $banner-background: color($light-banner-palette, "primary", 400),
        $banner-illustration-color: color($light-banner-palette, "secondary", 100)
    );
    
    Note

    igx-color e igx-palette son funciones potentes para generar y recuperar colores. Consulte el tema Palettes para obtener orientación detallada sobre cómo utilizarlas.

    Using schemas

    Puede crear una estructura sólida y flexible que se beneficie de schemas. Amplíe uno de los dos esquemas predefinidos que se proporcionan para cada componente, en este caso, el esquema light-banner:

    //  Extending the banner schema
    $light-toast-schema: extend($_light-toast,
        (
            banner-message-color: (
               color: ("secondary", 400)
            ),
            banner-background: (
               color: ("primary", 400)
            ),
            banner-illustration-color: (
               color: ("secondary", 100)
            )
        )
    );
    
    // Defining banner with the global light schema
    $custom-banner-theme: banner-theme(
      $palette: $light-banner-palette,
      $schema: $light-toast-schema
    );
    

    No olvide incluir los temas de la misma manera que se demostró anteriormente.

    API Reference

    Componentes adicionales y/o directivas con API relativas que se utilizaron:

    Theming Dependencies

    Additional Resources

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