Estilo condicional da grade de árvore Web Components
O recurso Ignite UI for Web Components Estilo condicional em Web Components Grade de árvore permite o estilo personalizado em um nível de linha ou célula. A IgcTreeGridComponent
funcionalidade Estilo condicional é usada para enfatizar ou realçar visualmente os dados que atendem a determinados critérios, tornando mais fácil para os usuários identificar informações ou tendências importantes na grade.
Tree Grid Conditional Row Styling
O IgcTreeGridComponent
componente no Ignite UI for Web Components fornece duas maneiras de estilizar condicionalmente linhas com base em regras personalizadas.
- By setting
rowClasses
input on theIgcTreeGridComponent
component; - Ao definir
rowStyles
aIgcTreeGridComponent
entrada no componente;
Mais adiante neste tópico, abordaremos os dois com mais detalhes.
Using Row Classes
Você pode estilizar condicionalmente as IgcTreeGridComponent
linhas definindo a rowClasses
entrada e definir regras personalizadas.
<igc-tree-grid id="grid" height="600px" width="100%">
</igc-tree-grid>
constructor() {
var grid = this.grid = document.getElementById('grid') as IgcTreeGrid;
grid.rowClasses = this.rowClasses;
}
A rowClasses
entrada aceita um literal de objeto, contendo pares chave-valor, em que a chave é o nome da classe CSS, enquanto o valor é uma função de retorno de chamada que retorna um valor booleano ou booleano.
public rowClasses = {
activeRow: (row: IgcRowType) => row.index === 0
}
.activeRow {
border: 2px solid #fc81b8;
border-left: 3px solid #e41c77;
}
Demo
Using Row Styles
O IgcTreeGridComponent
controle expõe a propriedade que permite o rowStyles
estilo condicional das linhas de dados. Semelhante a rowClasses
ele, aceita um literal de objeto em que as chaves são propriedades de estilo e os valores são expressões para avaliação. Além disso, você pode aplicar um estilo regular (sem quaisquer condições).
The callback signature for both
rowStyles
androwClasses
is:
(row: IgcRowType) => boolean
Vamos definir nossos estilos:
public rowStyles = {
'background': (row: IgcRowType) => row.data['Title'] === 'CEO' ? '#6c757d' :
row.data['Title'].includes('President') ? '#adb5bd' :
row.data['Title'].includes('Director') ? '#ced4da' :
row.data['Title'].includes('Manager') ? '#dee2e6' :
row.data['Title'].includes('Lead') ? '#e9ecef' :
row.data['Title'].includes('Senior') ? '#f8f9fa' : null,
'border-left': (row: IgcRowType) => row.data.data['Title'] === 'CEO' || row.data.data['Title'].includes('President') ?
'2px solid' : null,
'border-color': (row: IgcRowType) => row.data.data['Title'] === 'CEO' ? '#495057' : null,
color: (row: IgcRowType) => row.data.data['Title'] === 'CEO' ? '#fff' : null
};
<igc-tree-grid id="treeGrid" moving="true" primary-key="ID" foreign-key="ParentID"
width="100%" height="550px">
</igc-tree-grid>
constructor() {
var treeGrid = this.treeGrid = document.getElementById('treeGrid') as IgcTreeGridComponent;
treeGrid.rowStyles = this.rowStyles;
}
Demo
Tree Grid Conditional Cell Styling
Visão geral
O IgcTreeGridComponent
componente em Ignite UI for Web Components fornece duas maneiras de estilizar condicionalmente de células com base em regras personalizadas.
- Definindo a
IgcColumnComponent
entradacellClasses
para um literal de objeto contendo pares de valores-chave. A chave é o nome da classe CSS, enquanto o valor é uma função de retorno de chamada que retorna um valor booleano ou booleano. O resultado é um estilo de material conveniente da célula.
Using Cell Classes
Você pode estilizar condicionalmente as IgcTreeGridComponent
células definindo o IgcColumnComponent
cellClasses
insira e defina regras personalizadas.
<igc-column id="unitPrice" field="UnitPrice" header="Unit Price" data-type="currency"></igc-column>
constructor() {
var unitPrice = this.UnitPrice = document.getElementById('unitPrice') as IgcColumnComponent;
unitPrice.cellClasses = this.unitPriceCellClasses;
}
A cellClasses
entrada aceita um literal de objeto, contendo pares chave-valor, em que a chave é o nome da classe CSS, enquanto o valor é uma função de retorno de chamada que retorna um valor booleano ou booleano.
private downPriceCondition = (rowData: any, columnKey: any): boolean => {
return rowData[columnKey] <= 5;
}
private upPriceCondition = (rowData: any, columnKey: any): boolean => {
return rowData[columnKey] > 5;
}
public unitPriceCellClasses = {
downPrice: this.downPriceCondition,
upPrice: this.upPriceCondition
};
.upPrice {
color: red !important;
}
.downPrice {
color: green !important;
}
Demo
- Usando a
IgcColumnComponent
entradacellStyles
que aceita um literal de objeto em que as chaves são propriedades de estilo e os valores são expressões para avaliação.
A assinatura de retorno de chamada para ambos
cellStyles
ecellClasses
agora é alterada para:
(rowData: any, columnKey: string, cellValue: any, rowIndex: number) => boolean
Using Cell Styles
As colunas expõem a propriedade que permite o cellStyles
estilo condicional das células da coluna. Semelhante a cellClasses
ele, aceita um literal de objeto em que as chaves são propriedades de estilo e os valores são expressões para avaliação. Além disso, você pode aplicar o estilo regular com facilidade (sem quaisquer condições).
Vamos definir nossos estilos:
public webTreeGridCellStylesHandler = {
background: (rowData, columnKey, cellValue, rowIndex) => rowIndex % 2 === 0 ? "#EFF4FD" : null,
color: (rowData, columnKey, cellValue, rowIndex) => {
if (columnKey === "UnitPrice") {
if (cellValue > 10) return "#dc3545";
if (cellValue < 5) return "#28a745";
if (cellValue >= 5 && cellValue <= 10) return "#17a2b8";
}
}
}
<igc-column id="col1">
</igc-column>
constructor() {
var col1 = document.getElementById('col1') as IgcColumnComponent;
col1.cellStyles = this.webTreeGridCellStylesHandler;
}
Demo
Known issues and limitations
- Se houver células associadas à mesma condição (de colunas diferentes) e uma célula for atualizada, as outras células não serão atualizadas com base no novo valor, se a condição for atendida.
Uma verificação deve ser realizada para aplicar as alterações ao restante das células. O exemplo abaixo mostra como fazer isso.
public backgroundClasses = {
myBackground: (rowData: any, columnKey: string) => {
return rowData.Col2 < 10;
}
};
public editDone(evt) {
this.Col1.cellClasses = {...this.backgroundClasses};
}
<igc-tree-grid id="grid1" height="500px" width="100%" >
<igc-column id="Col1" field="Col1" data-type="number"></igx-column>
<igc-column id="Col2" field="Col2" data-type="number" editable="true"></igx-column>
<igc-column id="Col3" field="Col3" header="Col3" data-type="string"></igx-column>
<igc-tree-grid>
constructor() {
var grid = this.grid = document.getElementById('grid1') as IgcTreeGrid;
var Col1 = this.Col1 = document.getElementById('Col1') as IgcColumnComponent;
var Col2 = this.Col2 = document.getElementById('Col2') as IgcColumnComponent;
var Col3 = this.Col3 = document.getElementById('Col3') as IgcColumnComponent;
grid.data = this.data;
grid.onCellEdit = this.editDone;
Col1.cellClasses = this.backgroundClasses;
Col2.cellClasses = this.backgroundClasses;
Col3.cellClasses = this.backgroundClasses;
}
API References
Additional Resources
Nossa comunidade é ativa e sempre acolhedora para novas ideias.