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 issoIgxBadgeModule no seu arquivo app.module.ts.
// app.module.ts
...
import { IgxBadgeModule } from 'igniteui-angular/badge';
// import { IgxBadgeModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxBadgeModule],
...
})
export class AppModule {}
Alternativamente,16.0.0 você pode importar comoIgxBadgeComponent uma dependência independente.
// home.component.ts
...
import { IgxBadgeComponent } from 'igniteui-angular/badge';
// 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ê tem o módulo ou componente do Badge Ignite UI for Angular importado, pode começar com uma configuração básica doigx-badge componente.
Using the Angular Badge Component
Vamos ver como a amostra da demo é feita. É um simples distintivo de sucesso em um avatar. Para construir isso, precisamos importar oIgxAvatarModule, junto com oIgxBadgeModule:
// app.module.ts
...
import { IgxBadgeModule } from 'igniteui-angular/badge';
import { IgxAvatarModule } from 'igniteui-angular/avatar';
// import { IgxBadgeModule, IgxAvatarModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxBadgeModule, IgxAvatarModule],
...
})
export class AppModule {}
Alternativamente, a partir de16.0.0 agora, você pode importar asIgxBadgeComponent dependências eIgxAvatarComponent como independentes.
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 mudar a forma do distintivo usando oshape atributo definindo seu valor parasquare. Por padrão, o formato do distintivo é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 distintivo pode ser controlado usando a--size variável. Isso garante que o distintivo tenha tamanhos proporcionais em ambas as direções. Lembre-se, porém, que os emblemas contendo valores de texto usam ocaption estilo tipográfico para o tamanho da fonte e altura da linha. Por essa razão, ao definir valores--size abaixo de 16px de um distintivo contendo texto, 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, oigx-badge componente também suporta o uso do Material Icons Extended e qualquer outro conjunto de ícones personalizado. Para adicionar um ícone do conjunto de ícones de materiais estendidos dentro do seu componente de distintivo, 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 de contatos, semelhante aos dos clientes de chat. Além do nome do contato, queremos exibir um avatar e o estado atual do contato (online, offline ou ausente). Para isso, estamos usando osigx-badge componentes eigx-avatar Para um recipiente,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 } from 'igniteui-angular/list';
import { IgxAvatarModule } from 'igniteui-angular/avatar';
import { IgxBadgeModule } from 'igniteui-angular/badge';
// import { IgxListModule, IgxAvatarModule, IgxBadgeModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxListModule, IgxAvatarModule, IgxBadgeModule],
})
export class AppModule {}
Note
Osigx-badge dispositivos eicontype entradas para configurar o visual do distintivo. Você pode definir o ícone fornecendo seu nome no conjunto oficial de ícones de material. O tipo de distintivo pode ser definido para qualquer umdefault,info,success,warning, ouerror. Dependendo do tipo, uma cor de fundo específica é aplicada.
Em nossa amostra,icon etype estão vinculados a propriedades do modelo chamadas í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
Badge Theme Property Map
Alterar a$background-color propriedade atualiza automaticamente as seguintes propriedades dependentes:
| Propriedade primária | Propriedade dependente | Descrição |
|---|---|---|
| $background cor | $icon cor | A cor usada para os ícones no distintivo. |
| $text-cor | A cor usada para o texto no distintivo. |
Para começar a estilizar os emblemas, precisamos importar oindex arquivo, onde todas as funções de tema e mixins de componentes estão ativos:
@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 ebadge-theme aceita alguns parâmetros que estilizam os itens do selo. Quando você define o$background-color, os$icon-color e$text-color são automaticamente atribuídos com base em qual oferece melhor contraste — preto ou branco. Note que a$border-radius propriedade só entra em vigor quando o distintivoshape está configurado parasquare.
$custom-badge-theme: badge-theme(
$background-color: #57a5cd,
$border-radius: 4px
);
Para incluir o novo tema, usamos ocss-vars mixin:
@include css-vars($custom-badge-theme);
Demo
Styling with Tailwind
Você pode usarbadge nossas classes utilitárias personalizadas de Tailwind. Certifique-se de configurar o Tailwind primeiro.
Junto com a importação de vento de cauda em sua folha de estilo global, você pode aplicar os utilitários de tema desejados da seguinte maneira:
@import "tailwindcss";
...
@use 'igniteui-theming/tailwind/utilities/material.css';
O arquivo utilitário inclui tantolight as variantes quantodark as do tema.
- Use
light-*as aulas para o tema da luz. - Use
dark-*classes para o tema sombrio. - Adicione o nome do componente após o prefixo, por exemplo,
light-badge,dark-badge.
Uma vez aplicadas, essas classes possibilitam cálculos dinâmicos de temas. A partir daí, você pode sobrescrever as variáveis CSS geradas usandoarbitrary properties. Após os dois-pos, forneça qualquer formato de cor CSS válido (HEX, variável CSS, RGB, etc.).
Você pode encontrar a lista completa de propriedades no tema do emblema. A sintaxe é a seguinte:
<igx-badge
class="!light-badge ![--background:#FF4E00] ![--border-radius:4px]">
</igx-badge>
Note
O ponto de exclamação(!) é necessário para garantir que a classe utilitária tenha prioridade. O Tailwind aplica estilos em camadas e, sem marcar esses estilos como importantes, eles serão substituídos pelo tema padrão do componente.
No final, seus distintivos devem ficar assim:
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.