React Descripción general del banner

    El componente Ignite UI for React Banner proporciona una manera de mostrar fácilmente un mensaje destacado a los usuarios de la aplicación de una manera que es menos transitoria que una barra de aperitivos y menos intrusiva que un cuadro de diálogo. También puede indicar las acciones que se deben realizar en función del contexto del mensaje.

    Ignite UI for React Banner Example

    Usage

    Primero, debe instalar el paquete Ignite UI for React npm correspondiente ejecutando el siguiente comando:

    npm install igniteui-react
    

    A continuación, tendrás que importar el IgrBanner CSS necesario y registrar su módulo, de la siguiente manera:

    import { IgrBannerModule, IgrBanner } from 'igniteui-react';
    import 'igniteui-webcomponents/themes/light/bootstrap.css';
    
    IgrBannerModule.register();
    

    Para obtener una introducción completa a Ignite UI for React, lea el tema Introducción.

    Show Banner

    Para mostrar el componente de banner, utilice su show método y llámelo con un clic de 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 interacción mínima del usuario para ser descartado.

    <IgrButton clicked={() => bannerRef.current.show()}>
        <span>Show Banner</span>
    </IgrButton>
    
    <IgrBanner ref={bannerRef}>
        <span key="message">You are currently offline.</span>
    </IgrBanner>
    

    [!NOTE] The IgrBanner includes a default action button OK, which closes the banner.

    Examples

    El IgrBanner componente permite crear plantillas de su contenido sin dejar de ceñirse lo más posible a las directrices del banner de diseño de materiales.

    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 IgrBanner etiqueta. El texto se mostrará 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:

    <IgrBanner ref={bannerRef}>
        <span key="message">You have lost connection to the internet. This app is offline.</span>
    </IgrBanner>
    

    Adding an icon

    An IgrIcon se puede mostrar en el banner utilizando la ranura del prefix banner. El icono siempre se colocará al principio del mensaje de banner.

    [!NOTE] If several IgrIcon elements are inserted, the banner will try to position all of them at the beginning. It is strongly advised to pass only one IgrIcon directly to the banner.

    Para pasar un IgrIcon a tu banner, usa la prefix ranura:

    <IgrBanner ref={bannerRef}>
        <IgrIcon key="icon" slot="prefix" name="signal_wifi_off"></IgrIcon>
        <span key="message">You have lost connection to the internet. This app is offline.</span>
    </IgrBanner>
    

    Si desea utilizar un IgrIcon mensaje en su banner, simplemente insértelo en el contenido del banner:

    <IgrBanner ref={bannerRef}>
        <span key="message">You have lost connection to the internet. This app is offline.</span>
        <IgrIcon key="icon" name="signal_wifi_off"></IgrIcon>
    </IgrBanner>
    

    Changing the banner button

    Expone IgrBanner la actions ranura para crear plantillas de los botones de banner. Esto le permite anular el botón de banner predeterminado (OK) y agregar acciones personalizadas definidas por el usuario.

    <IgrBanner ref={bannerRef}>
        <IgrIcon key="icon" slot="prefix" name="signal_wifi_off"></IgrIcon>
        <span key="message">You have lost connection to the internet. This app is offline.</span>
        <div key="actions" slot="actions">
            <IgrButton key="button" variant="flat" clicked={() => bannerRef.current.toggle()}>
                <IgrRipple key="ripple" />
                <span key="action-text">Toggle Banner</span>
            </IgrButton>
        </div>
    </IgrBanner>
    

    Binding to events

    El componente de banner emite los igcClosing eventos y igcClosed cuando se cierra. El igcClosing evento es cancelable: utiliza la CustomEvent interfaz y el objeto emitido tiene su cancelable propiedad establecida en true. Si cancelamos el evento, la acción final y el igcClosing evento correspondientes no se activarán: el banner no se cerrará y el igcClosed evento no se emitirá.

    To cancel the closing event, call the preventDefault method.

    <IgrBanner ref={bannerRef}>
        ...
    </IgrBanner>
    
    const bannerRef = useRef<IgrBanner>(null);
    
    useEffect(() => {
        bannerRef.current.nativeElement.addEventListener('igcClosing', (event) => {
            event.preventDefault();
        });
    }, [])
    

    [!NOTE] If the changes above are applied, the banner will never close, as the closing event is always cancelled.

    Advanced Example

    Vamos a crear 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 la actions ranura:

    <IgrBanner ref={bannerRef}>
        <IgrIcon key="icon" slot="prefix" name="signal_wifi_off"></IgrIcon>
        <span key="message">You have lost connection to the internet. This app is offline.</span>
        <div key="actions" slot="actions">
            <IgrButton key="button-offline" variant="flat" clicked={() => bannerRef.current.hide()}>
                <IgrRipple key="ripple-offline" />
                <span key="action-offline">Continue Offline</span>
            </IgrButton>
            <IgrButton key="button-wifi" variant="flat" clicked={() => refreshBanner()}>
                <IgrRipple key="ripple-wifi" />
                <span key="action-wifi">Turn On Wifi</span>
            </IgrButton>
        </div>
    </IgrBanner>
    

    De acuerdo con las directrices de diseño de materiales de Google, un banner debe tener un máximo de 2 botones presentes. No IgrBanner limita explícitamente el número de elementos debajo de la actions ranura, pero se recomienda encarecidamente usar hasta 2 si desea cumplir con las pautas de diseño de materiales.

    La opción dismiss ( 'Continue Offline') no necesita más lógica, por lo que simplemente puede llamar al hide método. La acción de confirmación ( 'Turn On Wifi'), sin embargo, requiere alguna lógica adicional, por lo que tenemos que definirla en el componente. Luego, agregaremos un detector de eventos para el click evento. El último paso es llamar refreshBanner() al método en cada cambio, que alternará el banner en función de la wifiState.

    La barra de navegación tendrá un icono de Wifi y también agregaremos un oyente de eventos para su click evento. A medida que se llama al refreshBanner() método en cada cambio, el icono no solo alternará el banner, sino que cambiará según el estado de la conexión:

    <IgrNavbar>
        <h1 key="header">Gallery</h1>
        <IgrIcon ref={iconRef} key="icon" name="signal_wifi_off" slot="end" onClick={() => refreshBanner()}></IgrIcon>
    </IgrNavbar>
    
    <IgrBanner ref={bannerRef}>
        ...
        <div key="actions" slot="actions">
            ...
            <IgrButton key="button-wifi" variant="flat" clicked={() => refreshBanner()}>
                <IgrRipple key="ripple-wifi" />
                <span key="action-wifi">Turn On Wifi</span>
            </IgrButton>
        </div>
    </IgrBanner>
    
    const bannerRef = useRef<IgrBanner>(null);
    const iconRef = useRef<IgrIcon>(null);
    
    const [wifiState, setWifiState] = useState(false);
    
    function refreshBanner() {
        if (!wifiState) {
            iconRef.current.name = 'signal_wifi_4_bar';
            bannerRef.current.hide();
        } else {
            iconRef.current.name = 'signal_wifi_off';
            bannerRef.current.show();
        }
        setWifiState(current => !current);
    }
    

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

    Styling

    El componente banner expone varias partes CSS (base, spacer, message, illustration,, content y actions) para darle control total sobre su estilo.

    igc-banner::part(spacer) {
        background: #dedede;
    }
    
    igc-banner::part(illustration) {
        color: #666666;
    }
    
    igc-banner::part(content) {
        color: #151515;
    }
    

    API References

    Additional Resources