Visão geral do componente Angular Icon
O componente Ignite UI for Angular Icon unifica famílias de ícones/fontes para que os desenvolvedores possam usá-los de forma intercambiável e adicionar ícones de material à marcação.
Angular Icon Example
Getting Started with Ignite UI for Angular Icon
Para começar a usar o componente Ignite UI for Angular Icon, 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 IgxIconModule
no seu arquivo app.module.ts.
// app.module.ts
import { IgxIconModule } from 'igniteui-angular';
// import { IgxIconModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
imports: [
...
IgxIconModule,
...
]
})
export class AppModule {}
Como alternativa, a partir da 16.0.0
você pode importar o IgxIconComponent
como uma dependência autônoma.
// home.component.ts
import { IgxIconComponent } from 'igniteui-angular';
// import { IgxIconComponent } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: '<igx-icon [style.color]="color">home</igx-icon>',
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IgxIconComponent],
})
export class HomeComponent {
public color = '#e41c77';
}
Agora que você importou o módulo ou componente Ignite UI for Angular Icon, você pode começar a usar o componente igx-icon
.
Using the Angular Icon
Icon Color
Use a propriedade CSS style.color
para alterar sua cor padrão:
<igx-icon [style.color]="#e41c77">home</igx-icon>
Inactive Icon
Se você quiser desabilitar um ícone, você pode usar a propriedade active
:
<igx-icon [active]="false">volume_off</igx-icon>
Content Projection
Você pode definir ícones com projeção de conteúdo:
<igx-icon>bluetooth</igx-icon>
Icon Size
Você pode personalizar os ícones usando CSS. Para alterar o tamanho de um ícone, use a variável CSS--size
:
.custom-size {
--size: 56px;
}
SVG Icons
Você também pode usar uma imagem SVG como um ícone. Primeiro, injete a dependência IgxIconService
. Neste exemplo, vamos injetá-la no construtor de um componente, mas você pode usá-la onde for necessária em seu código.
Use o método addSvgIcon
para importar o arquivo SVG no cache. Quando o SVG é armazenado em cache, ele pode ser usado em qualquer lugar no aplicativo. O nome do ícone e o caminho da URL do arquivo são os parâmetros obrigatórios do método; family também pode ser especificado. Depois disso, você pode usar os arquivos SVG na marcação HTML. Como alternativa, você pode usar o método addSvgIconFromText
para importar um arquivo SVG, fornecendo o conteúdo de texto SVG em vez da URL do arquivo.
- Tenha em mente que se houver dois ícones com o mesmo nome e a mesma família, o ícone SVG será exibido com prioridade.
- É melhor não fornecer largura e altura da imagem no arquivo SVG.
- Você pode precisar de scripts polyfill adicionais ("polyfills") para o Internet Explorer.
constructor(private iconService: IgxIconService) { }
public ngOnInit() {
// register custom SVG icons
this.iconService.addSvgIcon('contains', '/assets/images/svg/contains.svg', 'filter-icons');
}
<igx-icon name="contains" family="filter-icons"></igx-icon>
Material Symbols
Além disso, os usuários podem aproveitar os ícones Material mais recentes e suas variações de design incluídas na recém-criada Material Symbols Library
. Para começar a usar Material Symbols, primeiro você precisa adicionar a biblioteca ao seu aplicativo:
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet"/>
Então precisamos injetar a dependência IgxIconService
e fazer uso do seu método setFamily
para que os Símbolos de Material possam funcionar com igx-icon
:
constructor(private iconService: IgxIconService) { }
public ngOnInit() {
// registers a 'material-symbols-outlined' class to be applied to all igx-icons with 'material-symbols' font-family
this.iconService.setFamily('material-symbols', { className: 'material-symbols-outlined', type: 'liga' });
}
Agora, estamos prontos para adicionar o ícone desejado à nossa marcação e personalizá-lo usando estilos de fonte ajustáveis:
<igx-icon family="material-symbols" name="diamond" class="custom-icon"></igx-icon>
.custom-icon {
font-variation-settings: "FILL" 0, "wght" 200, "GRAD" 0, "opsz" 40;
}
Para saber mais sobre os estilos dos Símbolos de Material, visite a official documentation
.
Server-side Rendering Note
Note
Caso você tenha implementado a lógica de renderização do lado do servidor em seu aplicativo usando Angular Universal e tenha usado o IgxIconService
para registrar ícones, isso pode causar a seguinte exceção:
> XMLHttpRequest is not defined. Could not fetch SVG from url.
>
Para evitar isso, execute as etapas listadas:
- Instale `xmlhttprequest`:
npm i xmlhttprequest
- No topo do seu arquivo `server.ts`, adicione:
(global as any).XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
Estilização
Para começar a estilizar os ícones, 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 icon-theme
e aceita os parâmetros necessários para personalizar o ícone conforme desejado.
$custom-icon-theme: icon-theme(
$color: #1481b8,
$disabled-color: #494949,
);
O último passo é passar o tema do ícone personalizado em nossa aplicação:
@include css-vars($custom-icon-theme);
Demo
Custom sizing
Você pode usar a variável--size
, direcionando diretamente o igx-icon
:
igx-icon {
--size: 50px;
}
Ou você pode usar a variável universal--igx-icon-size
para atingir todas as instâncias:
<div class="my-app">
<igx-icon></igx-icon>
</div>
.my-app {
--igx-icon-size: 50px;
}
Você também pode usar um dos tamanhos predefinidos, atribuindo-o à variável--ig-size
. Os valores disponíveis para--ig-size
são--ig-size-small
,--ig-size-medium
e--ig-size-large
:
igx-icon {
--ig-size: var(--ig-size-medium);
}
Saiba mais sobre isso no artigo Tamanho.
API References
Additional Resources
Nossa comunidade é ativa e sempre acolhedora para novas ideias.