Angular Fixação de coluna de grade
Uma coluna ou várias colunas podem ser fixadas no lado esquerdo ou direito da grade da interface do usuário do Angular. A fixação de coluna no Ignite UI for Angular permite que os usuários finais bloqueiem a coluna em uma ordem de coluna específica, o que permitirá que eles a vejam enquanto rolam horizontalmente a grade. A grade da interface do usuário do material tem uma interface de usuário de fixação de coluna integrada, que pode ser usada por meio da barra de ferramentas da grade para alterar o estado do pino das colunas. Além disso, você pode definir uma interface do usuário personalizada e alterar o estado do pino das colunas por meio da API de fixação de coluna.
Angular Grid Column Pinning Example
Column Pinning API
A fixação da coluna é controlada através da pinned
entrada do igx-column
. As colunas fixadas são renderizadas no lado esquerdo da grade por padrão e permanecem fixas por meio da rolagem horizontal das colunas desafixadas no corpo da grade.
<igx-grid #grid1 [data]="data | async" [width]="700px" [autoGenerate]="false" (columnInit)="initColumns($event)"
(selected)="selectCell($event)">
<igx-column [field]="Name" [pinned]="true"></igx-column>
<igx-column [field]="AthleteNumber"></igx-column>
<igx-column [field]="TrackProgress"></igx-column>
<igx-paginator [perPage]="10">
</igx-paginator>
</igx-grid>
Você também pode usar os métodos Grid pinColumn
ou unpinColumn
do para fixar ou desafixar colunas pelo nome do IgxGridComponent
campo:
this.grid.pinColumn('AthleteNumber');
this.grid.unpinColumn('Name');
Ambos os métodos retornam um valor booleano indicando se sua respectiva operação foi bem-sucedida ou não. Normalmente, o motivo pelo qual eles falham é que a coluna já está no estado desejado.
Uma coluna é fixada à direita da coluna fixada mais à direita. A alteração da ordem das colunas fixadas pode ser feita assinando o columnPin
evento e alterando a insertAtIndex
propriedade dos argumentos do evento para o índice de posição desejado.
<igx-grid #grid1 [data]="data | async" [autoGenerate]="true" (columnPin)="columnPinning($event)"></igx-grid>
public columnPinning(event) {
if (event.column.field === 'Name') {
event.insertAtIndex = 0;
}
}
Pinning Position
Você pode alterar a posição de fixação da coluna por meio da pinning
opção de configuração. Ele permite que você defina a posição das colunas como Início ou Fim. Quando definido como Final, as colunas são renderizadas no final da grade, após as colunas desafixadas. As colunas não afixadas podem ser roladas horizontalmente, enquanto as colunas fixadas permanecem fixas à direita.
<igx-grid [data]="data" [autoGenerate]="true" [pinning]="pinningConfig"></igx-grid>
public pinningConfig: IPinningConfig = { columns: ColumnPinningPosition.End };
Demo
Custom Column Pinning UI
Você pode definir sua interface do usuário personalizada e alterar o estado do pino das colunas por meio da API relacionada.
Digamos que, em vez de uma barra de ferramentas, você gostaria de definir ícones de pino nos cabeçalhos de coluna nos quais o usuário final pode clicar para alterar o estado do pino da coluna específica. Isso pode ser feito criando um modelo de cabeçalho para a coluna com um ícone personalizado.
<igx-grid #grid1 [data]="data" [width]="'100%'" [height]="'500px'">
<igx-column #col *ngFor="let c of columns" [field]="c.field" [header]="c.header" [width]="c.width" [pinned]='c.pinned'
[hidden]='c.hidden' [headerClasses]="'customHeaderSyle'">
<ng-template igxHeader>
<div class="title-inner">
<span style="float:left">{{col.header}}</span>
<igx-icon class="pin-icon" fontSet="fas" name="fa-thumbtack" (click)="toggleColumn(col)"></igx-icon>
</div>
</ng-template>
</igx-column>
</igx-grid>
Ao clicar no ícone personalizado, o estado do pino da coluna relacionada pode ser alterado usando os métodos de API da coluna.
public toggleColumn(col: ColumnType) {
col.pinned ? col.unpin() : col.pin();
}
Demo
Pinning Limitations
- Definir larguras de coluna em porcentagem (%) explicitamente faz com que o corpo da grade e o conteúdo do cabeçalho fiquem desalinhados quando houver colunas fixadas. Para que a fixação de coluna funcione corretamente, as larguras das colunas devem estar em pixels (px) ou atribuídas automaticamente pela Grid.
Estilização
O igxGrid permite estilizar através da Ignite UI for Angular Biblioteca de Temas. O tema da grade expõe uma grande variedade de propriedades, que permitem a personalização de todos os recursos da grade.
Nas etapas abaixo, estamos passando pelas etapas de personalização do estilo de fixação da grade.
Importing global theme
Para iniciar a personalização do recurso Fixação, você precisa importar o index
arquivo, onde todas as funções de estilo e mixins 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';
Defining custom theme
Em seguida, crie um novo tema, que estenda e grid-theme
aceite os parâmetros, necessários para personalizar o recurso de fixação conforme desejado.
$custom-theme: grid-theme(
$pinned-border-width: 5px,
$pinned-border-style: double,
$pinned-border-color: #ffcd0f,
$cell-active-border-color: #ffcd0f
);
Note
Em vez de codificar os valores de cor como acabamos de fazer, podemos obter maior flexibilidade em termos de cores usando as palette
funções e color
. Consulte o Palettes
tópico para obter orientações detalhadas sobre como usá-los.
Applying the custom theme
A maneira mais fácil de aplicar seu tema é com uma sass
@include
instrução no arquivo de estilos globais:
@include css-vars($custom-theme);
Demo
Note
A amostra não será afetada Change Theme
pelo tema global selecionado.
API References
Additional Resources
- Visão geral da grade
- Virtualização e desempenho
- Paginação
- Filtragem
- Classificação
- Resumos
- Movimentação de Colunas
- Redimensionamento de colunas
- Escolha