Descripción general del componente de insignia Angular
Angular Badge es un componente que se utiliza junto con avatares, menús de navegación u otros componentes en una aplicación cuando se necesita una notificación visual. Las insignias suelen estar diseñadas como iconos con un estilo predefinido para comunicar información, éxito, advertencias o errores.
Angular Badge Example
Getting Started with Ignite UI for Angular Badge
Para comenzar con el componente Ignite UI for Angular Badge, 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 IgxBadgeModule
en su archivo app.module.ts.
// app.module.ts
...
import { IgxBadgeModule } from 'igniteui-angular';
// import { IgxBadgeModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxBadgeModule],
...
})
export class AppModule {}
Alternativamente, a partir de 16.0.0
puede importar IgxBadgeComponent
como una dependencia independiente.
// home.component.ts
...
import { IgxBadgeComponent } from 'igniteui-angular';
// import { IgxBadgeComponent } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: '<igx-badge icon="check" type="success" shape="square"></igx-badge>',
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IgxBadgeComponent]
})
export class HomeComponent {}
Ahora que ha importado el módulo o componente Ignite UI for Angular Badge, puede comenzar con una configuración básica del componente igx-badge
.
Using the Angular Badge Component
Veamos cómo se hace la muestra de demostración. Es una simple insignia de éxito en un avatar. Para construir eso, necesitamos importar IgxAvatarModule
, junto con IgxBadgeModule
:
// app.module.ts
...
import { IgxBadgeModule, IgxAvatarModule } from 'igniteui-angular';
// import { IgxBadgeModule, IgxAvatarModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxBadgeModule, IgxAvatarModule],
...
})
export class AppModule {}
Alternativamente, a partir de 16.0.0
, puede importar IgxBadgeComponent
e IgxAvatarComponent
como dependencias independientes.
A continuación, agregaremos esos componentes a nuestra plantilla:
<div class="wrapper">
<igx-avatar icon="person" shape="circle" size="small"></igx-avatar>
<igx-badge icon="check" type="success"></igx-badge>
</div>
Usando el wrapper posicionaremos la insignia de manera absoluta, cubriendo un poco el avatar:
.wrapper {
position: relative;
margin-top: 15px;
}
igx-badge {
position: absolute;
bottom: 0;
left: 28px;
}
Badge Shape
Podemos cambiar la forma de la insignia a través del atributo shape
estableciendo su valor en square
. Por defecto, la forma de la insignia es rounded
.
<igx-badge icon="check" type="success" shape="square"></igx-badge>
Si todo se hace correctamente, debería ver la muestra de demostración que se muestra arriba en su navegador.
Badge Size
El tamaño de la insignia se puede controlar mediante la--size
variable. Se asegurará de que el tamaño de la insignia sea proporcional en ambas direcciones. Sin embargo, tenga en cuenta que las insignias que contienen valores de texto utilizan el estilo de tipografía para el tamaño de fuente y la caption
altura de línea. Por esa razón, al establecer el--size
de una insignia que contiene texto en valores inferiores a 16 px, también deberá modificar su tipografía.
Ejemplo:
igx-badge {
--size: 12px;
font-size: calc(var(--size) / 2);
line-height: normal;
}
Badge Icon
Además de los íconos de materiales, el componente igx-badge
también admite el uso de Material Icons Extended y cualquier otro conjunto de íconos personalizados. Para agregar un ícono del conjunto extendido de íconos de materiales dentro de su componente de insignia, primero debe registrarlo:
export class BadgeIconComponent implements OnInit {
constructor (protected _iconService: IgxIconService) {}
public ngOnInit() {
this._iconService.addSvgIconFromText(heartMonitor.name, heartMonitor.value, 'imx-icons');
}
}
Luego, simplemente especifique el nombre del ícono y la familia de la siguiente manera:
<igx-badge icon="heart-monitor" iconSet="imx-icons"></igx-badge>
Badge in List
Ampliemos el ejemplo anterior y creemos una lista con contactos, similar a las de los clientes de chat. Además del nombre del contacto, queremos mostrar un avatar y el estado actual del contacto (en línea, fuera de línea o ausente). Para lograr esto, utilizamos los componentes igx-badge
e igx-avatar
. Para un contenedor, se utiliza igx-list
.
Para continuar, incluya todos los módulos necesarios e impórtelos en el archivo app.module.ts.
// app.module.ts
...
import {
IgxListModule,
IgxAvatarModule,
IgxBadgeModule
} from 'igniteui-angular';
// import { IgxListModule, IgxAvatarModule, IgxBadgeModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxListModule, IgxAvatarModule, IgxBadgeModule],
})
export class AppModule {}
Note
La igx-badge
tiene entradas icon
y type
para configurar la apariencia de la insignia. Puede configurar el ícono proporcionando su nombre en el conjunto de íconos de materiales oficiales. El tipo de insignia se puede configurar como default
, info
, success
, warning
o error
. Dependiendo del tipo, se aplica un color de fondo específico.
En nuestro ejemplo, icon
y type
están vinculados a propiedades del modelo denominadas icon y type.
A continuación, agregamos los contactos en nuestra plantilla:
<!-- contacts.component.html -->
<igx-list>
<igx-list-item isHeader="true">
Team Members (4)
</igx-list-item>
<igx-list-item *ngFor="let member of members">
<div class="wrapper">
<div>
<igx-avatar icon="person" shape="circle" size="small"></igx-avatar>
<igx-badge [icon]="member.icon" [type]="member.type" class="badge-style"></igx-badge>
</div>
<div class="contact-container">
<span class="contact-name">{{ member.name }}</span>
</div>
</div>
</igx-list-item>
</igx-list>
Vamos a crear nuestros miembros en el archivo mecanografiado de esta manera:
// contacts.component.ts
...
public members: Member[] = [
new Member('Terrance Orta', 'online'),
new Member('Donna Price', 'online'),
new Member('Lisa Landers', 'away'),
new Member('Dorothy H. Spencer', 'offline'),
];
...
class Member {
public name: string;
public status: string;
public type: string;
public icon: string;
constructor(name: string, status: string) {
this.name = name;
this.status = status;
switch (status) {
case 'online':
this.type = 'success';
this.icon = 'check';
break;
case 'away':
this.type = 'warning';
this.icon = 'schedule';
break;
case 'offline':
this.type = 'error';
this.icon = 'remove';
break;
}
}
}
Coloque la insignia en su contenedor principal:
/* contacts.component.css */
.wrapper {
display: flex;
flex-direction: row;
}
.contact-name {
font-weight: 600;
}
.contact-container {
margin-left: 20px;
}
.badge-style {
position: absolute;
bottom: 2.5px;
left: 40px;
}
Si la muestra está configurada correctamente, se debe mostrar una lista de miembros y cada miembro tiene un avatar y una insignia que muestra su estado actual.
Estilismo
Para comenzar a diseñar las insignias, necesitamos importar el archivo index
, 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 simple, creamos un nuevo tema que extiende el badge-theme
y acepta algunos parámetros que dan estilo a los elementos de la insignia.
$custom-badge-theme: badge-theme(
$border-color: white,
$border-width: 1px,
$icon-color: white,
$text-color: black,
$shadow: 3px 2px 5px 0px rgba(0,0,0,0.4)
);
Including Themes
El último paso es incluir el tema del componente en nuestra aplicación.
Si $legacy-support
está configurado en true
, incluya el tema del componente así:
@include badge($custom-badge-theme);
Note
Si el componente utiliza una ViewEncapsulation Emulated
, es necesario penetrate
esta encapsulación usando::ng-deep
:host {
::ng-deep {
@include badge($custom-badge-theme);
}
}
Si $legacy-support
está configurado en false
(predeterminado), incluya las variables CSS del componente así:
@include css-vars($custom-badge-theme);
Note
Si el componente utiliza una ViewEncapsulation Emulated
, aún debe usar:host
porque necesita un selector global para anular las variables.
:host {
@include css-vars($custom-badge-theme);
}
No olvide incluir los temas de la misma manera que se demostró anteriormente.
Demo
API References
- Componente IgxAvatar
- Componente IgxBadge
- Estilos de componentes IgxBadge
- Componente IgxList
- Componente IgxListItem
- Tipo de insignia Igx
Theming Dependencies
Additional Resources
Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.