Visão geral do componente Angular Checkbox
Angular Checkbox é uma extensão do checkbox do tipo de entrada HTML padrão, fornecendo funcionalidade similar, apenas aprimorada com coisas como animações e estilo Material Design. Ele permite que os usuários escolham uma ou várias opções predefinidas, principalmente em formulários e pesquisas.
O componente Ignite UI for Angular Checkbox é um controle de seleção que permite que os usuários façam uma escolha binária para uma determinada condição. Ele se comporta de forma semelhante à caixa de seleção do navegador nativo. Alguns dos recursos que ele oferece são opções de estilo, temas, estados marcados, desmarcados e indeterminados, entre outros.
Angular Checkbox Example
Veja a caixa de seleção em ação no exemplo de caixa de seleção Angular abaixo.
Getting Started with Ignite UI for Angular Checkbox
Para começar a usar o componente Ignite UI for Angular Checkbox, 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 IgxCheckboxModule
no arquivo app.module.ts:
// app.module.ts
import { IgxCheckboxModule } from 'igniteui-angular';
// import { IgxCheckboxModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxCheckboxModule],
...
})
export class AppModule {}
Como alternativa, a partir da 16.0.0
você pode importar o IgxCheckboxComponent
como uma dependência autônoma.
// home.component.ts
import { IgxCheckboxComponent } from 'igniteui-angular';
// import { IgxCheckboxComponent } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: `
<igx-checkbox [checked]="true">
Simple checkbox
</igx-checkbox>
`,
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IgxCheckboxComponent]
})
export class HomeComponent {}
Agora que você importou o módulo ou componente Ignite UI for Angular Checkbox, você pode começar a usar o componente igx-checkbox
.
Using the Angular Checkbox Component
Para criar a caixa de seleção na demonstração, adicione o seguinte código dentro do modelo do componente:
<igx-checkbox [checked]="true">
Simple checkbox
</igx-checkbox>
Checkbox properties
Vamos aprimorar o código acima vinculando as propriedades da caixa de seleção a alguns dados. Digamos que temos uma matriz de objetos de tarefa, cada um com duas propriedades: description e done. Você pode vincular a propriedade checked
do componente da caixa de seleção à propriedade done do objeto de tarefa subjacente. Analogicamente, você pode vincular a propriedade value
à description. Opcionalmente, você também pode vincular o evento change
e adicionar alguma lógica personalizada no método do manipulador de eventos fornecido.
// tasks.component.ts
@Component({...})
export class HomeComponent {
public tasks = [
{ done: true, description: 'Research' },
{ done: true, description: 'Implement' },
{ done: false, description: 'Test' }
];
public statusChanged() {
// event handler logic
}
}
Melhore o modelo de componente adicionando uma caixa de seleção para cada tarefa e, em seguida, definindo as vinculações de propriedade correspondentes:
<!--tasks.component.html-->
<igx-checkbox *ngFor="let task of tasks" [checked]="task.done">
{{ task.description }}
</igx-checkbox>
Adicione alguns estilos:
//task.component.scss
:host {
display: flex;
flex-flow: column nowrap;
padding: 16px;
}
igx-checkbox {
margin-top: 16px;
}
O resultado final seria algo assim:
Label Positioning
Você pode posicionar o rótulo usando a propriedade labelPosition
da caixa de seleção:
<igx-checkbox labelPosition="before"></igx-checkbox>
Se labelPosition
não estiver definido, o rótulo será posicionado após a caixa de seleção.
Indeterminate Checkbox in Angular
Além dos estados marcado e desmarcado, há um terceiro estado em que uma caixa de seleção pode estar: indeterminate. Nesse estado, a caixa de seleção não é marcada nem desmarcada. Isso é definido usando a propriedade indeterminate
da caixa de seleção:
<igx-checkbox [indeterminate]="true"></igx-checkbox>
Podemos criar um aplicativo que tenha uma lista de tarefas que precisam ser feitas e uma caixa de seleção mestre no Angular que será marcada somente se todas as tarefas forem concluídas. Vamos atualizar o exemplo anterior. Começando com o modelo:
<!-- app.component.html -->
<igx-checkbox
[readonly]="true"
[(ngModel)]="masterCheckbox.checked"
[(indeterminate)]="masterCheckbox.indeterminate"
(click)="toggleAll()"
>
All done
</igx-checkbox>
<igx-checkbox class="tasks" *ngFor="let task of tasks" [(ngModel)]="task.done">
{{ task.description }}
</igx-checkbox>
Em seguida, vamos recuar as subtarefas para que fique mais visual que elas fazem parte do mesmo grupo.
// app.component.scss
:host {
display: flex;
flex-flow: column nowrap;
padding: 16px;
}
igx-checkbox {
margin-top: 16px;
}
igx-checkbox.tasks {
padding-left: 10px;
}
E por fim, criaremos a lógica da nossa aplicação:
// app.component.ts
public tasks = [
{ done: true, description: 'Research' },
{ done: true, description: 'Implement' },
{ done: false, description: 'Test' }
];
public get masterCheckbox() {
return this.tasks.reduce(
(acc, curr, idx, arr) => {
acc.checked = acc.checked && curr.done;
acc.done = curr.done ? acc.done + 1 : acc.done;
acc.indeterminate = acc.done === arr.length ? false : !!acc.done;
return acc;
},
{
checked: true,
done: 0,
indeterminate: false
}
);
}
public toggleAll() {
if (this.masterCheckbox.checked) {
for (const task of this.tasks) {
task.done = false;
}
} else {
for (const task of this.tasks) {
task.done = true;
}
}
}
Depois de tudo isso feito, nossa aplicação deverá ficar assim:
Estilização
Para começar a estilizar a caixa de seleçã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';
Em seguida, criamos um novo tema que estende o checkbox-theme
e usamos alguns de seus parâmetros para estilizar os itens do checkbox:
// in styles.scss
$custom-checkbox-theme: checkbox-theme(
$border-radius: 10px,
$label-color: #011627,
$empty-color: #ECAA53,
$fill-color: #ECAA53,
$tick-color: #011627,
);
O último passo é incluir o tema do componente em nosso aplicativo.
@include css-vars($custom-checkbox-theme);
Demo
Referências de API
Theming Dependencies
Recursos adicionais
Nossa comunidade é ativa e sempre acolhedora para novas ideias.