Visão geral do componente Progresso circular Angular
O componente Ignite UI for Angular Circular Progress Indicator fornece um indicador visual do processo de um aplicativo conforme ele muda. O indicador circular atualiza sua aparência conforme seu estado muda.
Angular Circular Progress Example
Getting Started with Ignite UI for Angular Circular Progress
Para começar a usar o componente Ignite UI for Angular Circular Progress, 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 IgxProgressBarModule
no arquivo app.module.ts:
// app.module.ts
...
import { IgxProgressBarModule } from 'igniteui-angular';
// import { IgxProgressBarModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxProgressBarModule],
...
})
export class AppModule {}
Como alternativa, a partir da 16.0.0
, você pode importar o IgxCircularProgressBarComponent
como uma dependência autônoma ou usar o token IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES
para importar o componente e todos os seus componentes e diretivas de suporte.
// home.component.ts
import { IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES } from 'igniteui-angular';
// import { IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: `
<igx-circular-bar
[value]="100"
[animate]="true"
class="custom-size"
></igx-circular-bar>
`,
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES],
/* or imports: [IgxCircularProgressBarComponent] */
})
export class HomeComponent {}
Agora que você importou o módulo Ignite UI for Angular Progress Bar ou as diretivas, você pode começar a usar o componente igx-circular-bar
.
Using the Angular Circular Progress
Para entender melhor como tudo funciona, vamos criar um exemplo simples, como o da demonstração:
<igx-circular-bar [value]="100" [animate]="true" class="custom-size"></igx-circular-bar>
Depois disso, devemos ter o exemplo de demonstração no seu navegador.
Note
O igx-circular-bar emite o evento onProgressChanged
que gera um objeto como este {currentValue: 65, previousValue: 64}
em cada etapa.
Note
O progresso padrão incrementa em 1% do valor max
por ciclo de atualização, isso acontece se o valor step
não for definido. Para alterar a taxa de atualização, o valor step
deve ser definido.```
Indeterminate Progress
Se você quiser rastrear um processo que não foi determinado com precisão, você pode definir a propriedade de entrada indeterminate
como true
.
<igx-circular-bar [animate]="false" [indeterminate]="true" [textVisibility]="false"></igx-circular-bar>
Note
Você pode ocultar o texto da barra de progresso circular definindo a propriedade textVisibility
como false
.
O resultado final deve ser:
Dynamic Progress
Você pode alterar dinamicamente o valor do progresso usando controles externos como botões. Para conseguir isso, podemos vincular o valor a uma propriedade de classe:
<div class="sample-content">
<igx-circular-bar
[value]="currentValue"
[max]="100"
[animate]="true"
class="custom-size">
</igx-circular-bar>
<div class="button-container">
<button igxIconButton="flat" (click)="decrementProgress()">
<igx-icon fontSet="material">remove</igx-icon>
</button>
<button igxIconButton="flat" (click)="incrementProgress()">
<igx-icon fontSet="material">add</igx-icon>
</button>
</div>
</div>
Adicione os métodos que incrementam e decrementam o valor:
@Component({...})
export class HomeComponent {
public currentValue: number;
public ngOnInit() {
this.currentValue = 0;
}
public incrementProgress() {
this.currentValue += 10;
if (this.currentValue > 100) {
this.currentValue = 100;
}
}
public decrementProgress() {
this.currentValue -= 10;
if (this.currentValue < 0) {
this.currentValue = 0;
}
}
}
Adicione alguns estilos:
.custom-size {
width: 100px;
height: 100px;
}
.sample-content {
width: 300px;
display: flex;
align-items: center;
margin-top: 30px;
}
Gradient Progress
Uma maneira de personalizar a barra de progresso é usando um gradiente de cor em vez de uma cor sólida. Isso pode ser feito de duas maneiras - usando a IgxProgressBarGradientDirective
diretiva ou implementando um tema personalizado, que suporta até duas paradas de cores.
Para criar um gradiente com apenas duas paradas de cor usando um tema personalizado, você precisa criar uma lista de cores e passá-la para o $fill-color-default
parâmetro do tema:
$colors: #695cf9, #ef017c;
$custom-theme: progress-circular-theme(
$fill-color-default: $colors,
);
Você pode aprender mais sobre como estilizar a barra de progresso circular na Styling Section
Para fornecer um gradiente com mais de 2 pontos de cor, temos que usar a diretiva em um ng-template
em nossa igx-circular-bar
assim:
<div class="sample-content">
<igx-circular-bar
[value]="currentValue"
[max]="100"
[animate]="true"
class="custom-size">
<ng-template igxProgressBarGradient let-id>
<svg:linearGradient [id]="id" gradientTransform="rotate(90)">
<stop offset="0%" stop-color="#ff9a40" />
<stop offset="50%" stop-color="#1eccd4" />
<stop offset="100%" stop-color="#ff0079" />
</svg:linearGradient>
</ng-template>
</igx-circular-bar>
<div class="button-container">
<button igxIconButton="flat" (click)="removeProgress()">
<igx-icon fontSet="material">remove</igx-icon>
</button>
<button igxIconButton="flat" (click)="addProgress()">
<igx-icon fontSet="material">add</igx-icon>
</button>
</div>
</div>
Após reproduzir os passos acima, você deverá obter este resultado:
Estilização
Para começar a estilizar a barra de progresso circular, 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 os progress-circular-theme
parâmetros e aceita os $base-circle-color
e . $fill-color-default
$custom-theme: progress-circular-theme(
$base-circle-color: lightgray,
$fill-color-default: rgb(32, 192, 17),
);
O último passo é incluir o tema do componente em nosso aplicativo.
@include css-vars($custom-theme);