Visão geral do componente Angular Button Group
O componente Angular Button Group é usado para organizar botões em grupos de botões estilizados com alinhamento horizontal/vertical, seleção única/múltipla e alternância.
Angular Button Group Example
Getting Started with Ignite UI for Angular Button Group
Para começar a usar o componente Ignite UI for Angular Button Group, 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 issoIgxButtonGroupModule no seu arquivo app.module.ts.
// app.module.ts
...
import { IgxButtonGroupModule } from 'igniteui-angular/button-group';
// import { IgxButtonGroupModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxButtonGroupModule],
...
})
export class AppModule {}
Alternativamente,16.0.0 você pode importarIgxButtonGroupComponent como uma dependência independente ou usar oIGX_BUTTON_GROUP_DIRECTIVES token para importar o componente e todos os seus componentes e diretivas de suporte.
// home.component.ts
...
import { IGX_BUTTON_GROUP_DIRECTIVES } from 'igniteui-angular/button-group';
import { IgxIconComponent } from 'igniteui-angular/icon';
// import { IGX_BUTTON_GROUP_DIRECTIVES, IgxIconComponent } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: `
<igx-buttongroup>
<button igxButton>
<igx-icon>format_align_left</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_center</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_right</igx-icon>
</button>
<button igxButton selected>
<igx-icon>format_align_justify</igx-icon>
</button>
</igx-buttongroup>
`,
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IGX_BUTTON_GROUP_DIRECTIVES, IgxIconComponent]
/* or imports: [IgxButtonGroupComponent, IgxButtonDirective, IgxIconComponent] */
})
export class HomeComponent {}
Agora que você importou o módulo ou diretivas Ignite UI for Angular Button Group, pode começar com uma configuração básica doigx-buttongroup e seus botões.
Using for Angular Button Group Component
Add Button Group
Use oigx-buttongroup seletor para enrolar seus botões e exibi-los em um grupo de botões. Se você quiser que um botão seja selecionado por padrão, use aselected propriedade:
<!-- sample.component.html -->
<igx-buttongroup>
<button igxButton>
<igx-icon>format_align_left</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_center</igx-icon>
</button>
<button igxButton>
<igx-icon>format_align_right</igx-icon>
</button>
<button igxButton selected>
<igx-icon>format_align_justify</igx-icon>
</button>
</igx-buttongroup>
Examples
Alignment
Use aalignment propriedade de entrada para definir a orientação dos botões no grupo de botões.
//sample.component.ts
import { ButtonGroupAlignment } from 'igniteui-angular/button-group';
// import { ButtonGroupAlignment } from '@infragistics/igniteui-angular'; for licensed package
...
public alignment = ButtonGroupAlignment.vertical;
...
<!-- sample.component.html -->
<igx-buttongroup [alignment]="alignment">
<button igxButton>Sofia</button>
<button igxButton>London</button>
<button igxButton selected>New York</button>
<button igxButton>Tokyo</button>
</igx-buttongroup>
Escolha
Para configurar aigx-buttongroup seleção, você pode usar a propriedade selectionMode. Essa propriedade aceita os seguintes três modos:
- single- modo de seleção padrão do grupo de botões. Um único botão pode ser selecionado/desselecionado pelo usuário.
- singleRequired- imita um comportamento de grupo de rádio. Apenas um botão pode ser selecionado e, uma vez feita a seleção inicial, a desmarcação não é possível por meio da interação do usuário.
- multi- vários botões no grupo podem ser selecionados e desmarcados.
O exemplo abaixo demonstra os modos de seleção expostosigx-buttongroup:
Tamanho
A--ig-size propriedade personalizada CSS pode ser usada para controlar o tamanho do grupo de botões.
/* sample.component.scss */
igx-buttongroup {
--ig-size: var(--ig-size-small);
}
<!-- sample.component.html -->
<igx-buttongroup></igx-buttongroup>
Custom toggle buttons
Use avalues propriedade de entrada para definir um array de botões personalizados no grupo de botões.
// sample.component.ts
interface IButton {
ripple?: string;
label?: string;
disabled?: boolean;
togglable?: boolean;
selected?: boolean;
color?: string;
icon?: string;
}
class ToggleButton {
private ripple: string;
private label: string;
private disabled: boolean;
private togglable: boolean;
private selected: boolean;
private color: string;
private icon: string;
constructor(obj?: IButton) {
this.ripple = obj.ripple || 'gray';
this.label = obj.label;
this.selected = obj.selected || false;
this.togglable = obj.togglable || true;
this.disabled = obj.disabled || false;
this.color = obj.color;
this.icon = obj.icon;
}
}
...
public bordersButtons: ToggleButton[];
public ngOnInit() {
this.bordersButtons = [
new ToggleButton({
icon: 'border_top',
selected: true
}),
new ToggleButton({
icon: 'border_right',
selected: false
}),
new ToggleButton({
icon: 'border_bottom',
selected: false
}),
new ToggleButton({
icon: 'border_left',
selected: false
})
];
}
...
<!-- sample.component.html -->
<igx-buttongroup [selectionMode]="'multi'" [values]="bordersButtons"></igx-buttongroup>
Estilização
Button Group Theme Property Map
Quando você define um valor para a$item-background propriedade, todas as propriedades dependentes relacionadas listadas na tabela abaixo são automaticamente atualizadas para manter a consistência visual. A tabela mostra quais propriedades são afetadas quando você personaliza a propriedade principal.
| Propriedade primária | Propriedade dependente | Descrição |
|---|---|---|
$item-contexto |
$item-hover-background | A cor de fundo flutuante para os itens. |
| $item-selecionado-fundo | A cor de fundo do item selecionado. | |
| $item-foco-foco-o-fundo | A cor de fundo do item focada. | |
| $disabled-cor de fundo | A cor de fundo do item desativada. | |
| $item-cor da borda | A cor da borda dos itens. | |
| $item-text-color | A cor do texto para os itens. | |
| $idle-sombra-cor | A cor da sombra ociosa para os itens. | |
$item-hover-background |
$item-selecionada-passa-mouse-fundo | O item selecionado passa a cor de fundo com o curso. |
| $item-fundo-focado no hover | A cor de fundo flutuante focada. | |
| $item-hover-text-color | A cor do texto para itens flutuados. | |
| $item-homover-ícone-cor | A cor do ícone para itens flutuados. | |
$item-selecionado-fundo |
$item-foco-selecionado-fundo-fundo | O item selecionado foca a cor de fundo. |
| $disabled-selecionado-fundo | A cor de fundo selecionada para deficientes. | |
| $item-selecionada-cor-texto- | A cor do texto para itens selecionados. | |
| $item-icon-color-selecionado | A cor do ícone para itens selecionados. | |
| $item-selecionada-passar o curso-de-texto-cor | A cor do texto para itens selecionados flutua. | |
| $item-escolhido-ícone-color-passar o mouse | A cor do ícone para itens selecionados flutuando. | |
$item-cor da borda |
$item-borda-cor flutuante | A cor da borda para itens flutuados. |
| $item-foca-no-cor-de-borda | A cor da borda para itens focados. | |
| $item-selecionada-cor-borda- | A cor da borda para itens selecionados. | |
| $item-selecionada-flutuar-cor-borda- | A cor da borda para itens selecionados de flutuação. | |
| $item-fronteira para pessoas com deficiência | A cor da borda para itens desativados. | |
| $disabled-selecionada-cor-borda- | A cor da borda para itens selecionados desativados. |
Para começar a estilizar o grupo de botões, 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 obutton-group-theme e especifica apenas o$item-background. Com base nesse valor, o tema calculará automaticamente as cores de estado apropriadas, os primeiros planos de contraste e as bordas do grupo de botões. Claro, você ainda pode sobrescrever qualquer um dos parâmetros do tema com valores personalizados, se necessário.
$custom-button-group: button-group-theme(
$item-background: #57a5cd,
);
Como visto, elebutton-group-theme expõe alguns parâmetros úteis para o estilo básico de seus itens. Se quiser aprofundar e mudar alguns parâmetros específicos de botões, pode criar um novo tema que estenda obutton-theme e escopá-lo sob a respectiva classe de grupo de botões.
A última etapa é incluir o tema do componente.
@include css-vars($custom-button-group);
Demo
Styling with Tailwind
Você pode usarbutton-group 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-button-group,dark-button-group.
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 grupo de botões. A sintaxe é a seguinte:
<igx-button-group
class="!light-button-group ![--item-background:#7B9E89]"
>
...
</igx-button-group>
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, seu grupo de botões deve ficar assim:
API References
Theming Dependencies
Additional Resources
Nossa comunidade é ativa e sempre acolhedora para novas ideias.