Visão geral do componente Angular Badge
Angular Badge é um componente usado em conjunto com avatares, menus de navegação ou outros componentes em um aplicativo quando uma notificação visual é necessária. Os Badges geralmente são projetados como ícones com um estilo predefinido para comunicar informações, sucesso, avisos ou erros.
Angular Badge Example
Getting Started with Ignite UI for Angular Badge
Para começar a usar o componente Ignite UI for Angular Badge, primeiro você precisa instalar Ignite UI for Angular. Em um aplicativo Angular existente, digite o seguinte comando:
ng add igniteui-angular
Para obter uma introdução completa ao Ignite UI for Angular, leia o tópico de introdução.
O próximo passo é importar o IgxBadgeModule
no seu arquivo 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 {}
Como alternativa, a partir da 16.0.0
você pode importar o IgxBadgeComponent
como uma dependência autônoma.
// 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 {}
Agora que você importou o módulo ou componente Ignite UI for Angular Badge, você pode começar com uma configuração básica do componente igx-badge
.
Using the Angular Badge Component
Vamos ver como o exemplo de demonstração é feito. É um simples emblema de sucesso em um avatar. Para construir isso, precisamos importar o IgxAvatarModule
, junto com o 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 {}
Como alternativa, a partir da 16.0.0
você pode importar o IgxBadgeComponent
e IgxAvatarComponent
como dependências autônomas.
Em seguida, adicionaremos esses componentes ao nosso modelo:
<div class="wrapper">
<igx-avatar icon="person" shape="circle" size="small"></igx-avatar>
<igx-badge icon="check" type="success"></igx-badge>
</div>
Usando o wrapper, posicionaremos o emblema de forma absoluta, cobrindo um pouco o avatar:
.wrapper {
position: relative;
margin-top: 15px;
}
igx-badge {
position: absolute;
bottom: 0;
left: 28px;
}
Badge Shape
Podemos alterar o formato do emblema por meio do atributo shape
definindo seu valor como square
. Por padrão, o formato do emblema é rounded
.
<igx-badge icon="check" type="success" shape="square"></igx-badge>
Se tudo for feito corretamente, você deverá ver o exemplo de demonstração mostrado acima no seu navegador.
Badge Size
O tamanho do emblema pode ser controlado usando a variável--size
. Ela garantirá que o emblema seja dimensionado proporcionalmente em ambas as direções. Tenha em mente, no entanto, que emblemas contendo valores de texto usam o estilo de tipografia caption
para seu tamanho de fonte e altura de linha. Por esse motivo, ao definir o--size
de um emblema contendo texto para valores abaixo de 16px, você também precisará modificar sua tipografia.
Exemplo:
igx-badge {
--size: 12px;
font-size: calc(var(--size) / 2);
line-height: normal;
}
Badge Icon
Além dos ícones de material, o componente igx-badge
também suporta o uso do Material Icons Extended e qualquer outro conjunto de ícones personalizados. Para adicionar um ícone do conjunto de ícones de material estendidos dentro do seu componente de emblema, primeiro você precisa registrá-lo:
export class BadgeIconComponent implements OnInit {
constructor (protected _iconService: IgxIconService) {}
public ngOnInit() {
this._iconService.addSvgIconFromText(heartMonitor.name, heartMonitor.value, 'imx-icons');
}
}
Depois, basta especificar o nome do ícone e a família da seguinte forma:
<igx-badge icon="heart-monitor" iconSet="imx-icons"></igx-badge>
Badge in List
Vamos estender o exemplo anterior e criar uma lista com contatos, semelhante àquelas em clientes de chat. Além do nome do contato, queremos exibir um avatar e o estado atual do contato (online, offline ou ausente). Para conseguir isso, estamos usando os componentes igx-badge
e igx-avatar
. Para um contêiner, igx-list
é usado.
Para continuar, inclua todos os módulos necessários e importe-os no arquivo 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
O igx-badge
tem entradas icon
e type
para configurar a aparência do emblema. Você pode definir o ícone fornecendo seu nome do conjunto de ícones de material oficial. O tipo de emblema pode ser definido como default
, info
, success
, warning
ou error
. Dependendo do tipo, uma cor de fundo específica é aplicada.
Em nosso exemplo, icon
e type
estão vinculados às propriedades do modelo denominadas ícone e tipo.
Em seguida, adicionamos os contatos em nosso modelo:
<!-- 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 criar nossos membros no arquivo typescript assim:
// 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;
}
}
}
Posicione o emblema em seu contêiner pai:
/* 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;
}
Se o exemplo estiver configurado corretamente, uma lista de membros deverá ser exibida e cada membro terá um avatar e um emblema, mostrando seu estado atual.
Estilização
Para começar a estilizar os emblemas, precisamos importar o arquivo index
, onde todas as funções do tema e mixins de componentes estão localizados:
@use "igniteui-angular/theming" as *;
// IMPORTANT: Prior to Ignite UI for Angular version 13 use:
// @import '~igniteui-angular/lib/core/styles/themes/index';
Seguindo a abordagem mais simples, criamos um novo tema que estende o badge-theme
e aceita alguns parâmetros que estilizam os itens do badge.
$custom-badge-theme: badge-theme(
$border-radius: 15px,
$icon-color: white,
$text-color: black,
);
Para incluir o novo tema usamos o mixin css-vars
:
@include css-vars($custom-badge-theme);
Demo
API References
- Componente IgxAvatar
- Componente IgxBadge
- Estilos de IgxBadgeComponent
- Componente de lista Igx
- Componente IgxListItem
- Tipo de emblema Igx
Theming Dependencies
Additional Resources
Nossa comunidade é ativa e sempre acolhedora para novas ideias.