Visão geral do botão Angular
A diretiva Angular Button é usada para criar e adicionar botões acionáveis a uma página/aplicativo da web. Existem diferentes tipos de Angular Button que são fáceis de personalizar e incluem vários recursos integrados. Por padrão, Angular Material usa elementos nativos <button>
e <a>
para fornecer uma experiência acessível.
A diretiva Ignite UI for Angular Button tem como objetivo transformar qualquer botão, span, div ou elemento de âncora em um botão totalmente funcional. Você pode usar os seguintes tipos de Angular Button - Flat Button, Contained Button, Outlined Button e Floating Action Button. Com cores personalizáveis, opções para criar temas e alterar o Angular Button Style e permitir que os usuários escolham o tamanho do botão e muito mais.
Angular Button Example
Criamos o exemplo do botão Angular abaixo para mostrar como diferentes tipos de botões podem aparecer e parecer quando são estilizados com uma borda ou quando um fundo transparente é aplicado.
Getting Started with Ignite UI for Angular Button
Para começar a usar a diretiva Ignite UI for Angular Button, 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 IgxButtonModule
no seu arquivo app.module.ts.
// app.module.ts
import { IgxButtonModule } from 'igniteui-angular';
// import { IgxButtonModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
imports: [
...
IgxButtonModule,
...
]
})
export class AppModule {}
Como alternativa, a partir da 16.0.0
você pode importar o IgxButtonDirective
como uma dependência autônoma.
// home.component.ts
...
import { IgxButtonDirective } from 'igniteui-angular';
// import { IgxButtonDirective } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: '<button igxButton="flat">Flat</button>',
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IgxButtonDirective]
})
export class HomeComponent {}
Agora que você importou o módulo ou a diretiva Ignite UI for Angular Button, você pode começar a usar a diretiva igxButton
nos elementos.
Angular Button Types
Flat Button
Use a diretiva igxButton
para adicionar um botão simples e plano no seu template de componente. Note que se você não escolher um tipo, por padrão ele será definido como flat
.
<button igxButton="flat">Flat</button>
Contained Button
Tudo o que você precisa fazer para criar um botão contido é alterar o valor da propriedade igxButton
:
<button igxButton="contained">Contained</button>
Outlined Button
Analogicamente, podemos mudar para o tipo de contorno:
<button igxButton="outlined">Outlined</button>
Botão de ícone
A partir da versão 17.1.0
o IgniteUI para Angular expõe uma nova diretiva igxIconButton
destinada a transformar ícones em botões totalmente funcionais. Você pode ler mais sobre o Icon Button aqui.
<button igxIconButton="flat">
<igx-icon fontSet="material">favorite</igx-icon>
</button>
Floating Action Button
Podemos criar um botão de ação flutuante e usar um ícone para exibir:
<button igxButton="fab">
<igx-icon fontSet="material">edit</igx-icon>
</button>
Para criar um FAB estendido, você pode adicionar qualquer elemento antes do igx-icon
:
<button class="btn" igxButton="fab">
<span>like</span>
<igx-icon fontSet="material">favorite</igx-icon>
</button>
Note
Para estilizar corretamente o texto FAB estendido, use as tags <span>
ou <div>
.
Examples
Angular Disable Button
A propriedade disabled
pode ser usada para tornar um botão não clicável:
<button igxButton="contained" [disabled]="'true'">Disabled</button>
Ondulação
A diretiva igxRipple
adiciona um efeito ripple aos seus botões ou outros elementos especificados. Você pode facilmente alterar a cor, posição e duração padrão do ripple, usando suas propriedades:
<button igxButton="contained" igxRipple="white" [igxRippleCentered]="true" [igxRippleDuration]="2000">
Ripple
</button>
Span
Também podemos usar a diretiva igxButton
para transformar elementos como span
e div
em Ignite UI for Angular. As cores padrão podem ser personalizadas por meio das propriedades igxButtonColor
e igxButtonBackground
:
<span igxButton="contained" igxButtonColor="white" igxButtonBackground="#72da67" igxRipple="white">
Span
</span>
Tamanho
Podemos permitir que o usuário escolha o tamanho do igxButton
usando a propriedade CSS personalizada--ig-size
. Para fazer isso, primeiro temos que importar o IgxButtonGroupModule
e, em seguida, usar o componente igxButtonGroup
para exibir valores de tamanho. Dessa forma, sempre que um for selecionado, atualizaremos a propriedade CSS--ig-size.
// app.module.ts
...
import { IgxButtonGroupModule } from 'igniteui-angular';
// import { IgxButtonGroupModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
imports: [
...
IgxButtonGroupModule
...
]
})
<!--buttons-density.component.html-->
<igx-buttongroup [values]="sizes" (selected)="selectSize($event)"></igx-buttongroup>
...
<button igxButton="flat">Flat</button>
// buttons-density.component.ts
public size = "large";
public sizes;
public ngOnInit() {
this.sizes = [
{ label: 'large', selected: this.size === 'large', togglable: true },
{ label: 'medium', selected: this.size === 'medium', togglable: true },
{ label: 'small', selected: this.size === 'small', togglable: true }
];
}
public selectSize(event: any) {
this.size = this.sizes[event.index].label;
}
@HostBinding('style.--ig-size')
protected get sizeStyle() {
return `var(--ig-size-${this.size})`;
}
Se tudo correr bem, você deverá ver algo como o seguinte no navegador:
Estilização
Para começar a estilizar o botão, 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 button-theme
e aceita os parâmetros $foreground
e $background
com seus respectivos parâmetros hover e focus.
Dada a seguinte marcação:
<div class="my-contained-btn">
<button igxButton="contained">Contained button</button>
</div>
Precisamos criar um tema:
$custom-button-theme: button-theme(
$foreground: #fdfdfd,
$hover-foreground: #fdfdfd,
$focus-foreground: #fdfdfd,
$background: #345779,
$hover-background: #2e4d6b,
$focus-background: #2e4d6b,
$disabled-foreground: #2e4d6b,
);
Dê uma olhada na seção button-theme
para obter uma lista completa de parâmetros disponíveis para estilizar qualquer tipo de botão.
O último passo é passar o tema do botão personalizado em nossa aplicação:
.button-sample {
@include css-vars($custom-button-theme);
}
Demo
Custom sizing
Você pode alterar a altura do botão usando a variável--size
, direcionando o button
diretamente:
button {
--size: 50px;
}
Ou você pode usar a variável universal--igx-button-size
para atingir todas as instâncias:
<div class="my-app">
<button igxButton="raised"></button>
</div>
.my-app {
--igx-button-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
:
button {
--ig-size: var(--ig-size-large);
}
Saiba mais sobre isso no artigo Tamanho.
API References
- Diretiva IgxButton
- Estilos de IgxButton
- Diretiva IgxRipple
- Diretiva IgxIconButton
- Componente do grupo IgxButton
Additional Resources
Nossa comunidade é ativa e sempre acolhedora para novas ideias.