Guia de atualização
No Ignite UI for Angular controle de versão, o primeiro número sempre corresponde à versão principal do Angular o código dá suporte e o segundo é dedicado para versões principais. Alterações significativas podem ser introduzidas entre as versões principais. Uma lista abrangente de alterações para cada versão do Ignite UI for Angular pode ser encontrada no produto CHANGELOG
O pacote Ignite UI for Angular também suporta a migração automática de versão por meio ng update
de esquemas. Eles tentarão migrar todas as alterações significativas possíveis (seletores renomeados, classes e propriedades @Input/Output), no entanto, ainda pode haver alterações que não podem ser migradas. Eles geralmente estão relacionados à lógica do aplicativo datilografado e serão descritos adicionalmente abaixo.
Primeiro, execute o ng update
comando que analisará seu aplicativo e as atualizações disponíveis para seus pacotes.
ng update
Para atualizar o pacote licenciado Ignite UI for Angular, execute o seguinte comando:
ng update @infragistics/igniteui-angular
Para atualizar o pacote Ignite UI for Angular free, execute o seguinte comando:
ng update igniteui-angular
Quando você atualiza @infragistics/igniteui-angular
ou igniteui-angular
- é recomendado atualizar,e @angular/core
@angular/cli
igniteui-cli
pacotes para suas versões correspondentes. Para atualizar o pacote da CLI do Ignite UI, execute o seguinte comando:
ng update igniteui-cli
Para atualizar o pacote principal do Angular, execute o seguinte comando:
ng update @angular/core
Para atualizar o pacote da CLI do Angular, use o seguinte comando:
ng update @angular/cli
Note
Se o ng update
comando falhar devido a incompatibilidades de dependência de pacote, reverta a atualização, exclua a node_modules
pasta e execute novamente a atualização com--force
sinalizador.
Additional manual changes
Infelizmente, nem todas as alterações podem ser atualizadas automaticamente. As alterações abaixo são divididas em seções à medida que ocorrem nas versões, portanto, se alguma atualização for necessária, você deve começar a partir da versão atual e aplicar outras atualizações de baixo para cima.
Por exemplo: se você estiver atualizando da versão 6.2.4 para a 7.1.0, comece com a opção "De 6.x .. " aplique essas alterações e vá subindo:
From 17.2.x to 18.0.x
Breaking changes
- Na versão 18.0.x, a propriedade depracated
displayDensity
é removida em favor da propriedade--ig-size
CSS personalizada. Para obter mais referências, consulte o guia de atualização de 16.0.x a 16.1.x.
Geral
IgxPivotGrid
Breaking changes
- A propriedade
showPivotConfigurationUI
da grade dinâmica é alterada e estendida parapivotUI
.
// version 17.2.x
<igx-pivot-grid [data]="data" [pivotConfiguration]="pivotConfig" [showPivotConfigurationUI]="false">
</igx-pivot-grid>
// version 18.0.x
<igx-pivot-grid [data]="data" [pivotConfiguration]="pivotConfig" [pivotUI]="{ showConfiguration: false }">
</igx-pivot-grid>
From 17.0.x to 17.1.x
Geral
IgxGrid
,IgxTreeGrid
,IgxHierarchicalGrid
- Alterações significativas
rowAdd
erowDelete
agora emitem argumento de evento do tipoIRowDataCancelableEventArgs
em vez deIGridEditEventArgs
. As duas interfaces ainda são compatíveis, no entanto, redundantes para essas propriedadescellID
de eventos,newValue
,oldValue
,estãoisAddRow
obsoletas eIRowDataCancelableEventArgs
serão removidas em uma versão futura. Alternar para as novas interfaces corretas deve revelar qualquer uso obsoleto que possa ser removido com segurança.
- Substituições
rowID
foi preterida nas seguintes interfaces:IGridEditDoneEventArgs
,IPathSegment
,IRowToggleEventArgs
,IPinRowEventArgs
,,eIgxAddRowParent
será removida em uma versão futura. UserowKey
em vez disso.primaryKey
foi preterida nas seguintes interfaces:IRowDataEventArgs
,IGridEditDoneEventArgs
. UserowKey
em vez disso.data
foi preterida nas seguintes interfaces:IRowDataEventArgs
. UserowData
em vez disso.
- Alterações significativas
Breaking changes
- Na versão 17.1.x, o
icon
igxButton
tipo da diretiva foi alterado para aigxIconButton
diretiva do tipoflat
. As migrações automáticas estão disponíveis e serão aplicadasng update
. No entanto, algumas dasigxButton
propriedades de entrada que podiam ser usadas anteriormente com osicon
botões de texto não podem ser aplicadas ao recém-criadoigxIconButton
. Se você usou asigxButtonColor
propriedades ou comigxButtonBackground
um botão do tipoicon
, atualize-o da seguinte maneira:
// version 17.0.x
<button igxButton="icon" [igxButtonBackground]="'red'">
<igx-icon fontSet="material">search</igx-icon>
</button>
// version 17.1.x
<button igxIconButton="flat" [style.background]="'red'">
<igx-icon fontSet="material">search</igx-icon>
</button>
NOTA: Os usuários precisam adicionar manualmente em IgxIconButtonDirective
suas importações:
import { IgxIconButtonDirective } from 'igniteui-angular';
@Component({
...
imports: [IgxIconButtonDirective]
})
From 16.1.x to 17.0.x
Geral
- Na versão 17.0, Angular removeram os
@nguniversal/*
pacotes. Se o projeto usar esses pacotes, uma chamada padrãong update
causará um erro nasigniteui-angular
migrações devido à modificaçãopackage-lock.json
inadequada - mais detalhes podem ser encontrados aqui. Para atualizar para17.0.x
uma das seguintes etapas adicionais, é necessário executar:- Exclua o arquivo antes de
package-lock.json
executarng update
- Executar
npm dedupe --legacy-peer-deps
antes de correrng update igniteui-angular
- Exclua o arquivo antes de
Alteração significativa
- O tipo
IComboSelectionChangingEventArgs
de argumentos de evento deselectionChanging
InIgxCombo
tem estas alterações:- propriedades
newSelection
eoldSelection
foram renomeadas paranewValue
eoldValue
respectivamente para refletir melhor sua função. Assim como o Combo, eles emitirão os valores de propriedade especificados ou itens de dados completos, dependendovalueKey
se estão definidos ou não. Migrações automáticasvalue
estão disponíveis e serão aplicadasng update
. - duas novas propriedades
newSelection
eoldSelection
são expostas no lugar das antigas que não são mais afetadas evalueKey
emitem consistentemente itens de Combo.data
- propriedades
added
eremoved
agora sempre contêm itens de dados, independentemente devalueKey
serem definidos. Isso os alinha com as propriedades and atualizadasnewSelection
oldSelection
.
- propriedades
Se o código no selectionChanging
manipulador de eventos dependia da leitura valueKeys
do argumento do evento, atualize-o da seguinte maneira:
// version 16.1.x
public handleSelectionChanging(e: IComboSelectionChangingEventArgs): void {
this.addedItems = e.added;
this.removedItems = e.removed;
}
// version 17.0.x
public handleSelectionChanging(e: IComboSelectionChangingEventArgs): void {
this.addedItems = e.added.map(i => {
return i[e.owner?.valueKey]
});
this.removedItems = e.removed.map(i => {
return i[e.owner?.valueKey]
});
}
getCurrentResourceStrings
foi removido. Em vez disso, use as importações de cadeia de caracteres de componente específicas.- Por exemplo, as cordas EN vêm de
igniteui-angular
:import { GridResourceStringsEN } from 'igniteui-angular';
- Por exemplo, DE ou outras strings de linguagem vêm de
igniteui-angular-i18n
:import { GridResourceStringsDE } from 'igniteui-angular-i18n';
Exemplos de uso podem ser encontrados no documento Localização (i18n) atualizado.
- Por exemplo, as cordas EN vêm de
From 16.0.x to 16.1.x
Geral
Non-breaking changes
- Estamos nos afastando do
DisplayDensityToken
token de injeção como uma forma de definir o tamanho dos componentes em favor de uma maneira mais simples e robusta - usando propriedades personalizadas CSS. Por esse motivo, oDisplayDensityToken
token de injeção agora está obsoleto. Isso se espalha por todos os componentes que expõem adisplayDensity
propriedade de entrada. As propriedades de token e entrada serão removidas na versão 17.0.0. Recomendamos que você faça o seguinte:
Remova todas as declarações em que o DisplayDensityToken
é fornecido:
// *.component.ts
// remove the provider declaration for `DisplayDensityToken`
providers: [{ provide: DisplayDensityToken, useValue: { displayDensity: DisplayDensity.compact } }],
Remova todas as associações ou atribuições programáticas para a displayDensity
propriedade input:
<!-- Remove `[displayDensity]="'compact'"` -->
<igx-grid [displayDensity]="'compact'">...</igx-grid>
Em vez disso, use a propriedade--ig-size
CSS personalizada para obter o mesmo resultado que displayDensity
:
/*
Add --ig-size to a component or global file.
Available values are:
- compact: --ig-size-small
- cosy: --ig-size-medium
- comfortable: --ig-size-large
*/
igx-grid {
--ig-size: var(--ig-size-small);
}
From 15.1.x to 16.0.x
A atualização para o Angular 16 vem com mudanças na forma como
NgModules
opera sob o capô. Anteriormente, adicionar um módulo que dependesse internamente de outro disponibilizaria as declarações de ambos em seu aplicativo. Esse comportamento não foi intencional e o Angular 16 o altera. Se o seu aplicativo dependia desse comportamento, por exemplo, você estava importando apenas um módulo contendo muitas dependências internas eIgxGridModule
usando componentes que vêm com elas, você precisará adicionar manualmente os módulos para cada componente que seu aplicativo usa separadamente.Alterações significativas
Na versão 16.0.x, todas as propriedades da grade, relacionadas à paginação, são removidas. O comportamento de paginação agora é configurado e controlado inteiramente por meio do
IgxPaginatorComponent
. Para habilitar a paginação na grade, inicialize oIgxPaginatorComponent
na grade e defina as propriedades de entrada relacionadas e anexe aos manipuladores de eventos ao próprio paginador:
<igx-grid ...>
<igx-paginator #paginator [totalRecords]="totalRecords" [perPage]="25" (pageChange)="pageChange($event) (perPageChange)="perPageChange($event)">
</igx-paginator>
<igx-grid>
@ViewChild('grid', { static: true }) private grid: IgxGridComponent;
@ViewChild('paginator', { static: true }) private paginator: IgxPaginatorComponent;
// prior version 16.0.x
public onButtonClick(event) {
this.grid.nextPage();
this.grid.previousPage();
this.grid.paginate(0);
}
// from version 16.0.x
public onButtonClick(event) {
this.paginator.nextPage();
this.paginator.previousPage();
this.paginator.paginate(0);
}
- Na versão 16.0.x, o método
getCellByColumnVisibleIndex(rowIndex: number, index: number)
grid é removido. Em vez disso, use:getCellByKey(rowSelector: any, columnField: string)
ougetCellByColumn(rowIndex: number, columnField: string)
. Exemplo:
// prior version 16.0.x
const cell = grid.getCellByColumnVisibleIndex(rowIndex, columnIndex);
// after version 16.0.x
const rowKey = grid.getRowByIndex(rowIndex).key;
const columnField = grid.getColumnByVisibleIndex(columnIndex).field;
const cell = grid.getCellByKey(rowKey, columnField);
const cell = grid.getCellByColumn(rowIndex, columnField);
From 15.0.x to 15.1.x
- Alteração significativa
rowSelectionChanging
O tipo de argumentos é alterado. Agora, asoldSelection
coleções ,newSelection
,added
andremoved
da interface não consistem mais nas chaves de linha dos elementos selecionados (quando a grade definiu um primaryKey), mas agora,IRowSelectionEventArgs
em qualquer caso, os dados da linha são emitidos. Quando a grade estiver trabalhando com dados remotos e aprimaryKey
estiver definido - para as linhas selecionadas que não fazem parte da exibição de grade no momento, um objeto de dados de linha parcial será emitido.
Se o código no rowSelectionChanging
manipulador de eventos dependia da leitura de primaryKeys do argumento do evento, atualize-o da seguinte maneira:
// prior version 15.1.x
public handleRowSelection(e: IRowSelectionEventArgs): void {
this.selectedRows = e.newSelection;
}
// after version 15.1.x
public handleRowSelection(e: IRowSelectionEventArgs): void {
this.selectedRows = e.newSelection.map(rec => {
return rec[e.owner?.primaryKey]
});
}
Mudança de comportamento Quando a linha selecionada é excluída do componente de grade,
rowSelectionChanging
o evento não é emitido.Mudança visual
Na versão 15.1, os tamanhos dos componentes de entrada aumentaram. Isso é mais perceptível ao usar o tema Material. Fazemos isso para corresponder às especificações do material. Se o aplicativo for afetado negativamente pela alteração, você poderá usar a entrada displayDensity e defini-la para uma configuração mais densa, por exemplo, de confortável para aconchegante ou de aconchegante para compacto.
Exemplo
<igx-input-group displayDensity="cosy">
...
</igx-input-group>
<igx-select displayDensity="cosy">
...
</igx-select>
<igx-combo displayDensity="cosy">
</igx-combo>
<igx-simple-combo displayDensity="cosy">
...
</igx-simple-combo>
Na versão 15.1, o componente de seleção e combinação agora tem plano de fundo ao redor do ícone de alternância. Você pode alterar o plano de fundo e a cor do ícone usando scss ou css.
Exemplo
$my-select: select-theme(
$toggle-button-background: red,
$toggle-button-foreground: #fff,
);
$my-combo: combo-theme(
$toggle-button-background: red,
$toggle-button-foreground: #fff,
);
@include css-vars($my-select);
@include css-vars($my-combo);
**Example**
.igx-select {
--igx-select-toggle-button-background: red;
--igx-select-toggle-button-foreground: #fff;
}
.igx-combo {
--igx-combo-toggle-button-background: red;
--igx-combo-toggle-button-foreground: #fff;
}
From 14.2.x to 15.0.x
Geral
igxGrid
,igxHierarchicalGrid
,igxTreeGrid
- Os parâmetros em modelos de grade agora têm tipos para seu contexto. Isso também pode causar problemas se o aplicativo estiver no modo de modelo estrito e usar o tipo errado. Referências ao modelo que podem exigir conversão:
IgxColumnComponent
-ColumnType
(por exemplo, o parâmetro de coluna emigxFilterCellTemplate
)IgxGridCell
-CellType
(por exemplo, o parâmetro de célula noigxCell
modelo)
- Os parâmetros em modelos de grade agora têm tipos para seu contexto. Isso também pode causar problemas se o aplicativo estiver no modo de modelo estrito e usar o tipo errado. Referências ao modelo que podem exigir conversão:
Ignite UI for Angular tem uma dependência do tema igniteui. Adicione a seguinte configuração de pré-processador em seu
angular.json
arquivo."build": { "options": { "stylePreprocessorOptions": { "includePaths": ["node_modules"] } } }
Alteração interruptiva- Todas as variáveis CSS globais para configuração de tema, cores, elevações e tipografia alteraram o prefixo de
--igx
para--ig
. Essa alteração não afeta as variáveis do componente global;Example:
Na versão 14.2.x:
:root { --igx-typography: 'Titillium Web', sans-serif; }
Na versão 15.0.x, isso se torna:
:root { --ig-typography: 'Titillium Web', sans-serif; }
Themes
Alteração interruptiva- O
grays
argumento de entrada foi renomeado paragray
.
Veja como isso afetará o código existente:Na versão 14.2.x:
$my-palette: palette( $primary: #09f, $secondary: #e41c77, $grays: #000 ); .my-class { background: color($color: 'grays', $variant: 300); color: contrast-color($color: 'grays', $variant: 300); border-color: hsl(var(--igx-grays-500)); }
Na versão 15.0.x e a partir de então:
$my-palette: palette( $primary: #09f, $secondary: #e41c77, $gray: #000 ); .my-class { background: color($color: 'gray', $variant: 300); color: contrast-color($color: 'gray', $variant: 300); border-color: hsl(var(--ig-gray-500)); }
Quebrando variáveis CSS geradoras de alterações para uma paleta agora é feito pelo mixin de paleta, em vez do mixin palette-vars.
Alteração interruptiva- A função de paleta agora requer que uma cor de superfície seja passada, enquanto a passagem de um valor para a
gray
cor é opcional. Se um valor para a cor de base cinza não for fornecido, ele será gerado automaticamente com base na luminosidade da cor da superfície - a cor da superfície clara resulta em uma cor de base cinza preta (# 000), enquanto uma cor de superfície escura gera uma cor cinza de base branca (#fff). Ao gerar uma paleta, você deve ter em mente que não há mais valores padrão para cores de informação, sucesso, erro e aviso. Você deve defini-los explicitamente se quiser usá-los. Você também pode pegar essas cores de uma paleta existente se não quiser criar os valores sozinho.Exemplo:
$my-palette: palette( $primary: #09f, $secondary: #e41c77, $surface: #fff, $info: color($light-material-palette, 'info'), $success: color($light-material-palette, 'success'), $error: color($light-material-palette, 'error'), $warn: color($light-material-palette, 'warn'), ); @include palette($my-palette);
Alteração interruptiva-O parâmetro da paleta agora é removido de todos os temas de componentes. Você pode usar a combinação de paleta para definir o escopo de uma paleta personalizada para um tema de componente de componente personalizado. Como abandonamos o suporte para o IE11, todos os temas de componentes se referem às variáveis CSS globais para cores, elevações, tipografia, etc., portanto, não é mais necessário passar uma paleta personalizada para um tema de componente.
Gerando um tema personalizado com uma paleta personalizada:
// app.component.scss $my-palette: palette( $primary: royalblue, $secondary: orange, $surface: white ); $avatar: avatar-theme( $background: color($color: 'primary'), $color: contrast-color($color: 'primary') ); :host ::ng-deep { // Include the custom palette in the scope of the app component. // It will have a higher specificity than the global palette. @include palette($my-palette): .my-avatar { @include avatar($avatar); } }
Tipografia
Alteração interruptiva- O mixin de estilo de tipo agora não aceita escala de tipo como parâmetro, apenas o nome da categoria.
Na versão 14.2.x e anteriores:
.my-class { @include type-style($type-scale: $my-type-scale, $category: h1); }
Na versão 15.0.x e posteriores:
.my-class { @include type-style(h1); }
Elevações
Alteração interruptiva- A função de elevação agora tem apenas um argumento nomeado -$name (o nome da elevação).
Alteração interruptiva- A função de elevações foi removida, agora você pode configurar as cores de elevação, usando o
configure-elevations
mixin.Na versão 14.2.x e anteriores:
.my-class { box-shadow: elevation($elevations, $elevation: 8); }
Na versão 15.0.x e posteriores:
.my-class { box-shadow: elevation(8); }
Grid Toolbar
Alteração interruptiva- Os
IgxGridToolbarTitleDirective
eIgxGridToolbarActionsDirective
foram convertidos em componentes, mantendo apenas o seletor de elementos. Para aplicativos que usam a marcação de elemento preferencial de<igx-grid-toolbar-title>
e<igx-grid-toolbar-actions>
não deve haver nenhuma alteração funcional. Os aplicativos que usam asigxGridToolbarTitle
diretivas andigxGridToolbarActions
em outros elementos precisarão convertê-los nos elementos mencionados:From:
<igx-grid-toolbar> <span igxGridToolbarTitle>Title</span > <div igxGridToolbarActions> ... </div> </igx-grid-toolbar>
To:
<igx-grid-toolbar> <igx-grid-toolbar-title>Title</igx-grid-toolbar-title> <igx-grid-toolbar-actions> ... </igx-grid-toolbar-actions> </igx-grid-toolbar>
From 13.1.x to 13.2.x
Themes
- Alteração interruptiva- Todas as folhas de estilo específicas da RTL foram removidas. Ignite UI temas agora suportam RTL directon por padrão. Os usuários que já usaram
*-rtl.css
temas específicos devem alternar para os arquivos de tema regulares.
From 13.0.x to 13.1.x
Geral
igxGrid
,igxHierarchicalGrid
,igxTreeGrid
- Alteração interruptiva- A propriedade columns'
movable
foi preterida. Em vez disso, use a propriedade de grademoving
exposta:
<igx-grid [moving]="true"> </igx-grid>
- Alteração interruptiva- A propriedade columns'
IgxHierarchicalGrid
- Alteração interruptiva: o serviço de API público para os componentes
hgridAPI
igxHierarchicalGrid e igxRowIsland foi renomeado paragridAPI
.
- Alteração interruptiva: o serviço de API público para os componentes
IgxToast
- Alteração interruptiva- A propriedade preterida
igx-toast
position
foi removida. Sugerimos usar apositionSettings
propriedade da seguinte maneira:
@ViewChild('toast', { static: true }) public toast: IgxToastComponent; public ngOnInit(): void { this.toast.positionSettings.verticalDirection = VerticalAlignment.Middle; }
- Alteração interruptiva- A propriedade preterida
From 12.2.x to 13.0.x
Geral
IE discontinued support
IgxDialog
- Alteração interruptiva- A posição padrãoConfigurações de abertura/fechamento da animação foi alterada para
fadeIn
/fadeOut
.
- Alteração interruptiva- A posição padrãoConfigurações de abertura/fechamento da animação foi alterada para
igxGrid
,igxHierarchicalGrid
,igxTreeGrid
Alteração interruptiva- As seguintes entradas obsoletas foram removidas -
showToolbar
,toolbarTitle
,columnHiding
,columnHidingTitle
,hiddenColumnsText
,columnPinning
,,columnPinningTitle
,.pinnedColumnsText
UseIgxGridToolbarComponent
,IgxGridToolbarHidingComponent
,IgxGridToolbarPinningComponent
em vez disso.Alteração interruptiva- Ao adicionar um componente, agora você deve especificar manualmente quais recursos deseja habilitar - Ocultação de
igx-toolbar
coluna, fixação, exportação do Excel. A Filtragem Avançada pode ser habilitada por meio daallowAdvancedFiltering
propriedade input na grade, mas é recomendável habilitá-la declarativamente com marcação, como acontece com os outros recursos.Alteração interruptiva: o
rowSelected
evento é renomeado pararowSelectionChanging
refletir melhor sua função.Alteração interruptiva: o
columnSelected
evento é renomeado paracolumnSelectionChanging
refletir melhor sua função.Alteração interruptiva-
columnsCollection
é removido. Usecolumns
em vez disso. Se em determinadas ocasiõescolumns
retornar array vazio, consulte as colunas usandoViewChildren
e acesse-as emngAfterViewInit
:@ViewChildren(IgxColumnComponent, { read: IgxColumnComponent }) public columns: QueryList<IgxColumnComponent>;
Alteração interruptiva- ao aplicar uma diretiva personalizada na grade, injete o
IGX_GRID_BASE
token no construtor para obter referência à grade de hospedagem:<igx-grid customDirective ...></igx-grid>
@Directive({ selector: '[customDirective]' }) export class customDirective { constructor(@Host() @Optional() @Inject(IGX_GRID_BASE) grid: IgxGridBaseDirective) { }
RowDirective
,RowType
- Alteração interruptiva-
rowData
erowID
as propriedades são removidas deRowDirective
e para classes que implementam aRowType
interface. Usedata
ekey
em vez disso. Useng update
para migração automática. A migração automática não será capaz de pegar alguns exemplos de modelos, onde o objeto de contexto do modelo não é digitado:
Atualize esses modelos manualmente para<ng-template igxCell let-cell="cell"> <span>{{ cell.rowID }}</span> <span>{{ cell.row.rowData.ProductID }}</span> </ng-template>
<span>{{ cell.key }}</span> <span>{{ cell.row.data.ProductID }}</span>
- Alteração interruptiva-
igxGrid
- Exposta uma
groupStrategy
entrada que funciona de formasortStrategy
semelhante, permitindo a personalização do comportamento de agrupamento da grade.
- Exposta uma
IgxCsvExporterService
,IgxExcelExporterService
- Os serviços de exportador não precisam mais ser fornecidos no aplicativo, pois agora são injetados em um nível raiz.
IgxGridToolbarPinningComponent
,IgxGridToolbarHidingComponent
- Nova entrada
buttonText
exposta que define o texto exibido dentro do botão suspenso na barra de ferramentas.
- Nova entrada
IgxCombo
- Adicionada
groupSortingDirection
entrada, que permite definir a ordem de classificação dos grupos.
- Adicionada
IgxGrid
,IgxTreeGrid
,IgxHierarchicalGrid
- Adicionadas novas diretivas para remodelagem de indicadores de classificação de cabeçalho -
IgxSortHeaderIconDirective
,IgxSortAscendingHeaderIconDirective
andIgxSortDescendingHeaderIconDirective
.
- Adicionadas novas diretivas para remodelagem de indicadores de classificação de cabeçalho -
IgxDialog
- Adicionada
focusTrap
entrada para definir se o foco da tecla Tab está preso na caixa de diálogo quando aberto. O padrão étrue
.
- Adicionada
IgxColumnActionsComponent
- Alteração interruptiva- A seguinte entrada foi removida
- Entrada
columns
. Em vez disso, useigxGrid
columns
a entrada.
- Entrada
- Alteração interruptiva- A seguinte entrada foi removida
IgxCarousel
- Alterações interruptivas- O tipo
CarouselAnimationType
de animação do carrossel é renomeado paraHorizontalAnimationType
.
- Alterações interruptivas- O tipo
IgxGridStateDirective
- agora suportadisableHiding
suporte de suporte de coluna e grupos de colunas
Temas
- A propriedade do componente
color
Icon foi preterida. Usestyle.color
a propriedade CSS para alterar sua cor padrão. Exemplos:
<igx-icon [style.color]="'#e41c77'">home</igx-icon>
<igx-icon style.color="{{ col.hasSummary ? '#e41c77' : '' }}">functions</igx-icon>
- Módulos Sass: O mecanismo de temas mudou para módulos Sass. Essa mudança significa que todas as funções da biblioteca de temas (temas comopnentes, etc.), mixins (mixins de componentes, etc.) e variáveis agora
forwarded
são de um único arquivo. Para usar corretamente a biblioteca de temas Sass, seu projeto deve utilizar o Dart Sass versão 1.33.0 ou posterior e alterar todas as importações da biblioteca de temas de:
// free version
@import '~igniteui-angular/lib/core/styles/themes/index';
// licensed version
@import '~@infragistics/igniteui-angular/lib/core/styles/themes/index';
to:
// free version
@use 'igniteui-angular/theming' as *;
// licensed version:
@use '@infragistics/igniteui-angular/theming' as *;
Se você quiser importar toda a biblioteca de temas apenas uma vez e usá-la em outros arquivos Sass em seu aplicativo, certifique-se de encaminhá-la. Os arquivos Sass importados não serão encaminhados automaticamente.
Before:
// _variables.scss
// free version
@import '~igniteui-angular/lib/core/styles/themes/index';
// licensed version
@import '~@infragistics/igniteui-angular/lib/core/styles/themes/index';
// _other-file.scss
@import 'variables';
After:
// _variables.scss
// free versioin
@use 'igniteui-angular/theming' as *;
@forward 'igniteui-angular/theming';
// licensed version
@use '@infragistics/igniteui-angular/theming' as *;
@forward '@infragistics/igniteui-angular/theming';
// _other-file.scss
@use 'variables' as *;
- Paletas e esquemas:
- As variáveis da paleta CSS não se referem mais a valores HEX, em vez disso, representam uma lista de 3 valores H, S e L, o que significa que devem ser passadas para as
hsl
funções ouhsla
CSS.
Before:
.some-class {
background: var(--igx-surface-500); // returns HEX color
}
After:
.some-class {
background: hsl(var(--igx-surface-500)); // returns a list of H, S, L
}
Isso foi feito para que as paletas possam ser alteradas em tempo de execução usando apenas variáveis CSS. Dessa forma, o canal alfa para uma determinada cor de paleta pode ser modificado em tempo de execução sem afetar a cor subjacente da paleta.
- Certifique-se de que a paleta e o esquema de componentes corretos sejam passados para seu componente personalizado e temas globais. Se você deseja criar um tema escuro global, certifique-se de selecionar um tom de cor mais claro para sua cor cinza, por exemplo:
$my-dark-palette: palette(
$primary: olive,
$secondary: yellow,
$grays: #fff
);
@include dark-theme($palette: $my-dark-palette);
Da mesma forma, os temas claros exigem um tom mais escuro de cinza e um esquema de cores claras.
Se você não excluiu nenhum tema de componente do tema global, mas ainda deseja criar seus próprios temas de substituição personalizados usando o css-vars
mixin, certifique-se de que o tema tenha passado a paleta correta e o esquema correspondente:
$my-custom-grid: grid-theme(
$palette: $my-dark-palette,
$schema: $dark-schema
);
@include css-vars($my-custom-grid);
- Temas de componentes excluídos:
Caso você tenha excluído alguns temas de componentes do tema global e tenha criado temas de substituição personalizados, certifique-se de que a combinação de componentes seja incluída e receba o tema de componente correto:
$my-dark-palette: palette(
...
$exclude: ('igx-grid')
);
$my-custom-grid: grid-theme(
$palette: $my-dark-palette,
$schema: $dark-schema
);
// Ensuregrid is included:
@include grid($my-custom-grid);
Caso seus temas de componentes personalizados sejam declarados em um arquivo Sass de componente separado, diferente do global styles.scss
, certifique-se de que o core
mixin também esteja incluído.
// free version
@use 'igniteui-angular/theming' as *;
// licensed version
@use '@infragistics/igniteui-angular/theming' as *;
// Include the core module mixin.
@include core();
// Create your theme.
$my-custom-grid: grid-theme(
$palette: $my-dark-palette,
$schema: $dark-schema
);
// Include your custom theme styles.
@include grid($my-custom-grid);
Para entender melhor o sistema Sass Moule, você pode ler este ótimo artigo de Miriam Suzanne;
From 12.0.x to 12.1.x
Grids
Alterações significativas:
IgxPaginatorComponent
- A maneira como o paginador é instanciado na grade mudou. Agora é um componente separado projetado na árvore de grade. Assim, a[paging]="true"
propriedade é removida de todas as grades e todas as outras propriedades relacionadas ao paginador na grade são preteridas. É recomendável seguir as diretrizes para habilitarGrid Paging
recursos, conforme descrito no tópico Paginação.IgxPageSizeSelectorComponent
eIgxPageNavigationComponent
são introduzidos para facilitar a implementação de qualquer conteúdo personalizado:
<igx-paginator #paginator> <igx-paginator-content> <igx-page-size></igx-page-size> [My custom text] <igx-page-nav></igx-page-nav> </igx-paginator-content> </igx-paginator>
- A API do componente de paginação foi alterada durante a refatoração e muitas das propriedades antigas agora estão obsoletas. Infelizmente, ter uma migração adequada para algumas dessas alterações é complicado, para dizer o mínimo, portanto, quaisquer erros devem ser tratados no nível do aplicativo.
- As seguintes propriedades foram preteridas da Grade:
- paginação, página por página, totalPages, isFirstPage, isLastPage, pageChange, perPageChange, pagingDone
- Os seguintes métodos também estão obsoletos:
- nextPage()
- anteriorPágina()
- A seguinte propriedade foi removida:
- paginationTemplate - para definir um modelo personalizado, use o
igx-paginator-content
- paginationTemplate - para definir um modelo personalizado, use o
- Especificações do HierarchicalGrid – o seguinte uso da Diretiva é necessário quando se trata de
*igxPaginator
habilitar a paginação em RowIslands:
<igx-hierarchical-grid #hGrid > <igx-column *ngFor="let c of hColumns" [field]="c.field"> </igx-column> <igx-row-island [key]="'childData'" [autoGenerate]="true"> <igx-row-island [key]="'childData'" [autoGenerate]="true"> <igx-paginator *igxPaginator></igx-paginator> </igx-row-island> <igx-paginator *igxPaginator></igx-paginator> </igx-row-island> <igx-row-island [key]="'childData2'" [autoGenerate]="true"> <igx-paginator *igxPaginator></igx-paginator> </igx-row-island> <igx-paginator></igx-paginator> </igx-hierarchical-grid>
- Embora a migração mova o conteúdo do modelo para dentro do
igx-paginator-content
conteúdo, ela pode não resolver todas as associações de modelo. Verifique seus arquivos de modelo após a migração. As seguintes associações devem ser alteradas manualmente, pois essas propriedades foram removidas (pagerEnabled
,pagerHidden
,dropdownEnabled
,dropdownHidden
):
From:
<igx-paginator #paginator [pagerEnabled]="!isPagerDisabled" [pagerHidden]="isPagerHidden" [dropdownHidden]="isDropdownHidden"> </igx-paginator>
To:
<igx-paginator #paginator *ngIf="!isPagerDisabled"> <igx-paginator-content> <igx-page-size *ngIf="isDropdownHidden"></igx-page-size> <igx-page-nav *ngIf="isPagerHidden"></igx-page-nav> </igx-paginator-content> </igx-paginator>
- IgxGridCellComponent, IgxTreeGridCellComponent, IgxHierarchicalGridCellComponent, IgxGridExpandableCellComponent não são mais expostos na API pública. Consulte as seções abaixo para obter um guia detalhado sobre como atualizar para o novo
IgxGridCell
.
Descontinuação da grade:
- O padrão de DI para fornecimento
IgxGridTransaction
foi preterido. O seguinte ainda funcionará, mas é recomendável refatorá-lo, pois provavelmente será removido em uma versão futura:
@Component({ template: `<igx-grid [data]="data"> ... </igx-grid>`, providers: [{ provide: IgxGridTransaction, useClass: IgxTransactionService }], ... }) export class MyCustomComponent { ... }
Para obter o comportamento acima, você deve usar a entrada recém-adicionada
batchEditing
:@Component({ template: `<igx-grid [data]="data" [batchEditing]="true"> ... </igx-grid>` ... }) export class MyCustomComponent { ... }
getCellByColumnVisibleIndex
agora está obsoleto e será removido na próxima versão principal. UsegetCellByKey
,getCellByColumn
em vez disso.
- O padrão de DI para fornecimento
IgxGridCell migration
IgxGridCellComponent,IgxTreeGridCellComponent,IgxHierarchicalGridCellComponent,IgxGridExpandableCellComponent não são mais expostos na API pública.
As APIs públicas, que costumavam retornar uma instância de um dos itens acima, agora retornam uma instância de
IgxGridCell
:
const cell = grid.getCellByColumn(0, 'ProductID'); // returns IgxGridCell
const cell = grid.getCellByKey('ALFKI', 'ProductID'); // returns IgxGridCell
const cell = grid.getCellByColumnVisibleIndex(0, 0); // returns IgxGridCell
const rowCells = grid.getRowByIndex(0).cells; // returns IgxGridCell[]
const selectedCells = grid.selectedCells; // returns IgxGridCell[]
const cells = grid.getColumnByName('ProductID').cells; // returns IgxGridCell[]
cell
IGridCellEventArgs
nos argumentos de evento emitidos pelos eventos cellClick,selected,contextMenu e doubleClick agora é uma instância de IgxGridCell
let-cell
no modelo de célula é agoraIgxGridCell
.getCellByColumnVisibleIndex
agora está obsoleto e será removido na próxima versão principal. UsegetCellByKey
,getCellByColumn
em vez disso.
Observação:
- ng update migrará os usos de IgxGridCellComponent,IgxTreeGridCellComponent,IgxHierarchicalGridCellComponent,IgxGridExpandableCellComponent, como importações, digitações e conversões. Se um lugar em seu código usando qualquer um dos itens acima não for migrado, basta remover a tipagem/conversão ou alterá-la com
IgxGridCell
. - getCellByIndex e outros métodos retornarão undefined, se a linha nesse índice não for uma linha de dados, mas for IgxGroupByRow, IgxSummaryRow, linha de detalhes, etc.
Themes
Devido a reclamações relativas a avisos de compilação (consulte # 9793), agora usamos a math.div
função; Essa funcionalidade é suportada pelo Dart Sass a partir da versão 1.33.0.
Solução
Se por algum motivo você vir erros de compilação do Sass dizendo que math.div
não é uma função conhecida, significa que você está usando uma versão desatualizada do Sass em seu projeto.
- Atualize para a versão mais recente do Angular usando
ng update
-Angular 12.1.0+ usa o compilador dart-sass por padrão.
ng update [options]
Se, por algum motivo, você não usar a CLI do Ignite UI / Angular, precisará substituí-la node-sass
sass
por em seu projeto Node.
npm uninstall node-sass
npm install sass --save-dev
- Se, por algum motivo, você não puder atualizar para a versão mais recente do Angular usando o método acima, poderá voltar ao antigo método de divisão Sass definindo um sinalizador global em seu arquivo Sass:
$__legacy-libsass: true;
From 11.1.x to 12.0.x
Themes
Alterações significativas:
IgxAvatar
foi simplificado. O número de parâmetros de tema (avatar-theme
) foi reduzido significativamente e não inclui mais parâmetros prefixados(icon-*
,initials-*
,image-*
) e parâmetrosborder-radius-*
com sufixo(). As atualizações realizadas comng update
migrarão os temas de avatar existentes, mas alguns ajustes adicionais podem ser necessários para compensar a ausência de parâmetros prefixados e sufixos.
Você precisará modificar os temas de avatar específicos do tipo existente da seguinte maneira:
Por exemplo, isso:
```scss $avatar-theme: avatar-theme( $initials-background: blue, $initials-color: orange, $icon-background: blue, $icon-color: orange, ); @include avatar($avatar-theme); ```
Precisa ser transformado nisso:
```scss $initials-avatar: avatar-theme( $background: blue, $color: orange, ); $icon-avatar: avatar-theme( $background: blue, $color: orange, ); .initials-avatar { @include avatar($initials-avatar); } .icon-avatar { @include avatar($icon-avatar); } ```
IgxButton
foi simplificado. O número de parâmetros de tema (button-theme
) foi reduzido significativamente e não inclui mais parâmetros prefixados (flat-*
,raised-*
, etc.). As atualizações executadas comng update
migrarão os temas de botão existentes, mas alguns ajustes adicionais podem ser necessários para compensar a ausência de parâmetros prefixados.
Para obter o mesmo resultado do trecho de código abaixo.
```html <button igxButton="raised">Raised button</button> <button igxButton="outlined">Outlined button</button> ``` ```scss $my-button-theme: button-theme( $raised-background: red, $outlined-outline-color: green ); @include css-vars($my-button-theme); ```
Você precisa criar um tema separado para cada tipo de botão e definir o escopo para um seletor CSS.
html <div class="my-raised-btn"> <button igxButton="raised">Raised button</button> </div> <div class="my-outlined-btn"> <button igxButton="outlined">Outlined button</button> </div>
```scss $my-raised-button: button-theme( $background: red ); $my-outlined-button: button-theme( $border-color: red ); .my-raised-btn { @include css-vars($my-raised-button); } .my-outlined-btn { @include css-vars($my-outlined-button); } ```
Como você pode ver, como os
button-theme
parâmetros agora têm os mesmos nomes para cada tipo de botão, temos que definir o escopo de nossos temas de botão para um seletor CSS para ter cores diferentes para tipos diferentes.Aqui você pode ver todas as propriedades disponíveis do
button-theme
- O
typography
mixin não está mais incluídocore
implicitamente. Para usar nossos estilos de tipografia, você deve incluir o mixin explicitamente antescore
e depoistheme
:
// in styles.scss @include core(); @include typography( $font-family: $material-typeface, $type-scale: $material-type-scale ); @include theme();
Important
O
core
mixin deve sempre ser incluído primeiro.Para cada tema incluído no Ignite UI for Angular fornecemos variáveis específicas
font-family
etype-scale
que você pode usar:Tema Família de fontes Escala de tipo Material Tipo de $material Escala de tipo $material Fluente $fluent tipo de letra $fluent escala de tipo Bootstrap Tipo de $bootstrap Escala de tipo $bootstrap Anil $indigo tipo de letra Escala de tipo $indigo
IgxBottomNav component
O IgxBottomNavComponent foi completamente refatorado para fornecer uma maneira mais flexível e descritiva de definir cabeçalhos e conteúdo de guias. É recomendável que você atualize via ng update para migrar as definições igx-bottom-nav existentes para as novas.
Modelo
- A nova estrutura define os componentes do item de navegação inferior, cada um envolvendo um cabeçalho e um componente de conteúdo. Os cabeçalhos geralmente contêm um ícone (
Material guidelines
), mas também podem ter um rótulo ou qualquer outro conteúdo personalizado. - Para fins de estilo de cabeçalho, introduzimos duas novas diretivas -
igxBottomNavHeaderLabel
andigxBottomNavHeaderIcon
. - Como o componente de cabeçalho agora permite adicionar qualquer conteúdo, a
igxTab
diretiva, que antes era usada para reformular o cabeçalho da guia, foi removida porque não é mais necessária. - Quando o componente é usado no cenário de navegação, a
routerLink
diretiva precisa ser anexada ao componente de cabeçalho.
<igx-bottom-nav> <igx-bottom-nav-item> <igx-bottom-nav-header> <igx-icon igxBottomNavHeaderIcon>folder</igx-icon> <span igxBottomNavHeaderLabel>Tab 1</span> </igx-bottom-nav-header> <igx-bottom-nav-content> Content 1 </igx-bottom-nav-content> </igx-bottom-nav-item> ... </igx-bottom-nav>
- A nova estrutura define os componentes do item de navegação inferior, cada um envolvendo um cabeçalho e um componente de conteúdo. Os cabeçalhos geralmente contêm um ícone (
Mudanças na API
- As
id
propriedades ,itemStyle
,panels
,viewTabs
,econtentTabs
tabs
foram removidas. Atualmente, aitems
propriedade retorna a coleção de guias. - As seguintes propriedades foram alteradas:
- A propriedade do item de
isSelected
guia foi renomeada paraselected
. - A
selectedTab
propriedade foi renomeada paraselectedItem
.
- A propriedade do item de
- Os
onTabSelected
eventos eonTabDeselected
foram removidos. Introduzimos três novos eventos,selectedIndexChanging
,selectedIndexChange
andselectedItemChange
, que fornecem mais flexibilidade e controle sobre a seleção das guias. Infelizmente, ter uma migração adequada para essas alterações de eventos é complicado, para dizer o mínimo, portanto, quaisquer erros devem ser tratados no nível do projeto.
- As
IgxTabs component
O IgxTabsComponent foi completamente refatorado para fornecer uma maneira mais flexível e descritiva de definir cabeçalhos e conteúdo de guias. É recomendado que você atualize via ng update para migrar as definições igx-tabs existentes para as novas.
Modelo
- A nova estrutura define componentes de item de guia, cada um envolvendo um cabeçalho e um componente de conteúdo. Os cabeçalhos geralmente contêm um ícone e um rótulo, mas também podem ter qualquer outro conteúdo personalizado.
- Para fins de estilo de cabeçalho, introduzimos duas novas diretivas -
igxTabHeaderLabel
andigxTabHeaderIcon
. - Como o componente de cabeçalho agora permite adicionar qualquer conteúdo, a
igxTab
diretiva, que antes era usada para reformular o cabeçalho da guia, foi removida porque não é mais necessária. - Quando o componente é usado no cenário de navegação, a
routerLink
diretiva precisa ser anexada ao componente de cabeçalho.
<igx-tabs> <igx-tab-item> <igx-tab-header> <igx-icon igxTabHeaderIcon>folder</igx-icon> <span igxTabHeaderLabel>Tab 1</span> </igx-tab-header> <igx-tab-content> <h1>Tab 1 Content</h1> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> </igx-tab-content> </igx-tab-item> ... </igx-tabs>
Mudanças na API
- As
id
propriedades ,groups
,viewTabs
,econtentTabs
tabs
foram removidas. Atualmente, aitems
propriedade retorna a coleção de guias. - As seguintes propriedades foram alteradas:
- A propriedade do item de
isSelected
guia foi renomeada paraselected
. - A
selectedTabItem
propriedade foi reduzida paraselectedItem
. - A
type
propriedade, com suas opções contentFit e fixed, não está mais disponível. O modo de dimensionamento e posicionamento do cabeçalho é atualmente controlado pelatabAlignment
propriedade de entrada que aceita quatro valores diferentes - start (padrão), center, end e justify. O tipo antigocontentFit
corresponde ao valor de alinhamento atualstart
e o tipo antigofixed
- ao valor atualjustify
.
- A propriedade do item de
- Os
tabItemSelected
eventos etabItemDeselected
foram removidos. Introduzimos três novos eventos,selectedIndexChanging
,selectedIndexChange
andselectedItemChange
, que fornecem mais flexibilidade e controle sobre a seleção das guias. Infelizmente, ter uma migração adequada para essas alterações de eventos é complicado, para dizer o mínimo, portanto, quaisquer erros devem ser tratados no nível do projeto.
- As
IgxGridComponent, IgxTreeGridComponent, IgxHierarchicalGridComponent
- IgxGridRowComponent,IgxTreeGridRowComponent,IgxHierarchicalRowComponent,IgxGridGroupByRowComponent não são mais expostos na API pública.
- As APIs públicas, que costumavam retornar uma instância de uma das anteriores, agora retornam objetos que implementam a interface pública
RowType
:
const row = grid.getRowByIndex(0);
const row = grid.getRowByKey(2);
const row = cell.row;
Embora a API pública de RowType
seja a mesma que IgxRowComponent e outros costumavam expor, observe:
- toggle, exposto pelo IgxHierarchicalRowComponent não está disponível. Use
expanded
a propriedade para todos os tipos de linha:
grid.getRowByIndex(0).expanded = false;
row.rowData e row.rowID foram descontinuados e serão totalmente removidos com a versão 13. Em vez disso, use row.data e row.key.
- row nos argumentos de evento emitidos por onRowPinning e dragData nos argumentos de evento emitidos por onRowDragStart, onRowDragEnd agora está implementando
RowType
- ng update migrará a maioria dos usos de IgxGridRowComponent,IgxTreeGridRowComponent,IgxHierarchicalRowComponent,IgxGridGroupByRowComponent, como importações, tipificações e conversões. Se um lugar em seu código usando qualquer um dos itens acima não for migrado, basta remover a tipagem/conversão ou alterá-la com
RowType
. - getRowByIndex agora retornará um
RowType
objeto, se a linha nesse índice for uma linha de resumo (usada anteriormente para retornar indefinido). row.isSummaryRow e row.isGroupByRow retornarão true se a linha no índice for uma linha de resumo ou um grupo por linha.
IgxInputGroupComponent
A
disabled
propriedade foi removida. A propriedade era enganosa, pois o estado do grupo de entrada sempre foi gerenciado pelo subjacenteigxInput
.- A execução
ng update
lidará com todas as instâncias nas quais[disabled]
foi usado como modelos@Input
in. - Se você estiver fazendo referência à propriedade em um
.ts
arquivo:
export class CustomComponent { public inputGroup: IgxInputGroupComponent ... this.inputGroup.disabled = false; }
Você deve atualizar manualmente seu código para fazer referência à propriedade da diretiva de entrada subjacente:
disabled
export class CustomComponent { public input: IgxInputDirective ... this.input.disabled = false; }
- A execução
IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent
- A
value
propriedade para IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent agora aceita o formato de cadeia de caracteres ISO 8601. Isso significa que ovalue
tipo pode serDate
oustring
. - A
inputFormat
propriedade de IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent agora não aceitay
a parte do ano. Você deve atualizá-lo parayy
.
From 10.2.x to 11.0.x
- IgxGrid, IgxTreeGrid, IgxHierarchicalGrid
- A maneira como a barra de ferramentas é instanciada na grade foi alterada. Agora é um componente separado projetado na árvore de grade. Assim, a
showToolbar
propriedade é removida de todas as grades e todas as outras propriedades relacionadas à barra de ferramentas na grade são preteridas. É recomendável seguir a maneira recomendada para habilitar os recursos da barra de ferramentas, conforme descrito no tópico Barra de ferramentas. - A
igxToolbarCustomContent
diretiva é suprimida. Embora a migração mova o conteúdo do modelo para dentro do conteúdo da barra de ferramentas, ela não tenta resolver as associações de modelo. Verifique seus arquivos de modelo após a migração. - A API do componente da barra de ferramentas foi alterada durante a refatoração e muitas das propriedades antigas foram removidas. Infelizmente, ter uma migração adequada para essas mudanças é complicado, para dizer o mínimo, portanto, quaisquer erros devem ser tratados no nível do projeto.
- A maneira como a barra de ferramentas é instanciada na grade foi alterada. Agora é um componente separado projetado na árvore de grade. Assim, a
From 10.0.x to 10.1.x
- IgxGrid, IgxTreeGrid, IgxHierarchicalGrid
- Como removemos as
IgxExcelStyleSortingTemplateDirective
diretivas ,IgxExcelStyleHidingTemplateDirective
,IgxExcelStyleMovingTemplateDirective
,IgxExcelStylePinningTemplateDirective
, eIgxExcelStyleSelectingTemplateDirective
usadas para modelar algumas partes do menu de filtro de estilo do Excel, você pode usar as diretivas recém-adicionadas para modelar as áreas de operações de coluna e filtro -IgxExcelStyleColumnOperationsTemplateDirective
andIgxExcelStyleFilterOperationsTemplateDirective
. Também expusemos todos os componentes internos do menu de filtro de estilo do Excel para que possam ser usados dentro de modelos personalizados. Você pode encontrar mais informações sobre as novas diretivas de modelo no Tópico de filtragem de estilo do Excel.
- Como removemos as
- IgxGrid
- O
selectedRows()
método foi refatorado em uma propriedade de entrada chamada. Essa alteração significativa permite que os usuários alterem facilmente o estado de seleção da grade em tempo de execução. A pré-seleção de linhas também é suportada. Todas as instâncias em que oselectedRows()
método é chamado devem ser reescritas sem parênteses. - A associação à
selectedRows
propriedade input pode ser algo assim:
public mySelectedRows = [0, 1, 2];
<igx-grid [data]="myData" rowSelection="multiple" primaryKey="ID" [selectedRows]="mySelectedRows"> <!-- ... --> </igx-grid>
- O
From 9.0.x to 10.0.x
IgxDropdown
A propriedade display do item suspenso foi alterada de
flex
parablock
. Fizemos isso para que o texto truncado fosse ativado por padrão. Devido a essa alteração, se houver mais de texto no conteúdo do item suspenso, o layout precisará ser tratado no nível do aplicativo.O exemplo a seguir demonstra como estilizar um item suspenso com um ícone e conteúdo de texto para que eles sejam alinhados verticalmente.
<igx-drop-down-item> <div class="my-styles"> <igx-icon>alarm</igx-icon> <span>item text</span> </div> </igx-drop-down-item>
.my-styles { display: flex; align-items: center; span { margin-left: 8px; } }
From 8.x.x to 9.0.x
Devido a uma alteração significativa no Angular 9 Os provedores do Hammer não são mais adicionados implicitamente, consulte o seguinte documento para obter detalhes: Por isso, os seguintes componentes precisam HammerModule
ser importados no módulo raiz do aplicativo para que as interações por toque funcionem conforme o esperado:
- igxGrid
- igxHierarchicalGrid
- igxTreeGrid
- igxList
- igxNavigationDrawer
- igxTimePicker
- igxDatePicker
- igxMonthPicker
- igxSlider *
- igxCalendário
- igxCarrossel
* Nota- igxSlider requer o HammerModule para todas as interações do usuário.
Você pode usar o snippet de código a seguir para atualizar o arquivo do módulo raiz do aplicativo.
import { HammerModule } from "@angular/platform-browser";
@NgModule({
...
imports: [
...
HammerModule
]
})
Devido a alterações de nome feitas em alguns dos Enumerations
que exportamos, é necessária uma atualização manual para seus membros. Aqui está uma lista de todas as alterações feitas que exigem atualização manual:
- AvatarType.
DEFAULT
-> IgxAvatarType.CUSTOM
- Tipo.
DEFAULT
-> IgxBadgeType.PRIMARY
- IgxCardType.
DEFAULT
-> IgxCardType.ELEVATED
- IgxCardActionsLayout.
DEFAULT
-> IgxCardActionsLayout.START
- IgxDividerType.
DEFAULT
-> IgxDividerType.SOLID
- IgxProgressType.
DANGER
-> IgxProgressType.ERROR
O ng update
processo atualizará todos os nomes de enumeração, como AvatarType
, Type
, et al. para IgxAvatarType
e IgxBadgeType
, respectivamente. Todos os outros nomes de membros de enumeração permanecem inalterados.
From 8.1.x to 8.2.x
IgxDrag
Como
hideBaseOnDrag
as entradas evisible
estão sendo preteridas, para obter a mesma funcionalidade em seu aplicativo, você pode usar qualquer maneira de ocultar o elemento base que Angular fornece. Um exemplo é definir ovisibility
estilo comohidden
, já que ele só ficará invisível e manterá o espaço que ocupa no DOM:<div igxDrag [ngStyle]="{ 'visibility': targetDragged ? 'hidden' : 'visible' }" (dragStart)="onDragStarted($event)" (dragEnd)="onDragEnded($event)"> Drag me! </div>
public targetDragged = false; public onDragStarted(event) { this.targetDragged = true; } public onDragEnded(event) { this.targetDragged = false; }
Como
animateOnRelease
edropFinished()
também estão sendo obsoletos, qualquerdropFinished()
uso de método deve ser substituído portransitionToOrigin()
. Caso contrário, você precisaria chamartransitionToOrigin()
dependendo de quando deseja que o elemento arrastado faça a transição de volta ao seu local original. Observe que, se a posição do DOM do elemento arrastado for alterada, sua localização original também será alterada com base nisso.
IgxDrop
Como a estratégia de descarte padrão fornecida com a
IxgDrop
diretiva não é mais aplicada por padrão, para continuar tendo o mesmo comportamento, você precisa definir a nova entradadropStrategy
para ser a implementação fornecidaIgxAppendDropStrategy
.<div igxDrop [dropStrategy]="appendStrategy"></div>
import { IgxAppendDropStrategy } from 'igniteui-angular'; // import { IgxAppendDropStrategy } from '@infragistics/igniteui-angular'; for licensed package public appendStrategy = IgxAppendDropStrategy;
Qualquer uso de interfaces
IgxDropEnterEventArgs
eIgxDropLeaveEventArgs
deve ser substituído porIDragBaseEventArgs
.Além disso, qualquer uso da
IgxDropEventArgs
interface deve ser substituído porIDropDroppedEventArgs
.
Diretiva IgxRowDragDirective
IRowDragStartEventArgs
eIRowDragEndEventArgs
ter o nome do argumento alterado para ser mais claro sobre o que ele se refere.owner
argumento é renomeado paradragDirective
. Oowner
argumento agora fornece uma referência ao componente proprietário. Se o seu código fosse como:
A partir da versão 8.2.x, ele deve ser atualizado para:public dragStart(event) { const directive = event.owner; }
public dragStart(event) { const directive = event.dragDirective; const grid = event.owner; }
IgxCombo
- A maneira como as manipulações
igx-combo
de seleção e vinculação de dados são alteradas.
- Se a entrada [
valueKey
] do combo for definida, o controle procurará essa propriedade específica na matriz passada de itens de dados ao executar a seleção. Todos os eventos de seleção são tratados com o valor da propriedade dos itens de dados.valueKey
Todos os combos especificadosvalueKey
devem ter sua seleção/associação bidirecional consistindo apenas nos valores da propriedade do objeto especificada na entrada:
<igx-combo [data]="cities" valueKey="id" displayKey="name"></igx-combo>
export class MyExampleCombo { public data: { name: string, id: string }[] = [{ name: 'London', id: 'UK01' }, { name: 'Sofia', id: 'BG01' }, ...]; ... selectFavorites() { // Selection is handled with the data entries' id properties this.combo.selectItems(['UK01', 'BG01']); } }
- Se a combinação não tiver um
valueKey
definido, todos os eventos de seleção serão tratados com igualdade (===). Todos os combos que não têm umvalueKey
especificado devem ter sua seleção/associação bidirecional tratada com referências a seus itens de dados:
<igx-combo [data]="cities" displayKey="name"></igx-combo>
export class MyExampleCombo { public data: { name: string, id: string }[] = [{ name: 'London', id: 'UK01' }, { name: 'Sofia', id: 'BG01' }, ...]; ... selectFavorites() { // Selection is handled with references to the data entries this.combo.selectItems([this.data[0], this.data[1]]); } }
Você pode ler mais sobre como configurar o combo no leia-me e na documentação oficial.
- A maneira como as manipulações
From 8.0.x to 8.1.x
- O
igx-paginator
componente é introduzido como um componente independente e também é usado nos componentes de grade. Lembre-se de que, se você tiver definido opaginationTemplate
, talvez seja necessário modificar seu CSS para exibir a paginação corretamente. Isso se deve ao fato de que o modelo não é mais aplicado em um contêiner específico de paginação com regras CSS para centralizar o conteúdo, portanto, talvez seja necessário adicioná-las manualmente. O estilo deve ser algo semelhante a:
<igx-grid #grid [data]="data" [paging]="true" [perPage]="10" [paginationTemplate]="pager">
</igx-grid>
<ng-template #pager>
<div class="pagination-container"></div>
</ng-template>
.pagination-container {
display: flex;
justify-content: center;
align-items: center;
}
From 7.3.x to 8.0.x
- Durante a atualização, se você enfrentar o seguinte erro
Package "@angular/compiler-cli" has an incompatible peer dependency to "typescript" (requires ">=3.1.1 <3.3", would install "3.4.5").
, atualize@angular/core
o pacote primeiro. Isso está relacionado a este problema conhecido da CLI do Angular - Ao atualizar o
igniteui-angular
pacote, se você vir o seguinte erroPackage "igniteui-angular" has an incompatible peer dependency to "web-animations-js" (requires "^2.3.1", would install "2.3.2-pr208")
, atualize usandong update igniteui-angular --force
. Isso pode acontecer se você atualizar@angular/core
e@angular/cli
antes deigniteui-angular
atualizar.
From 7.2.x or 7.3.x to 7.3.4
- Se você usar o
filterGlobal
método de,ouIgxHierarchicalGrid
IgxGrid
IgxTreeGrid
, você deve saber que ocondition
parâmetro não é mais opcional. Quando ofilterGlobal
método é chamado com uma condição inválida, ele não limpará os filtros existentes para todas as colunas.
From 7.1.x to 7.2.x
- Se você usa um IgxCombo com
combo.value
, você deve saber que agoracombo.value
é apenas um getter. - Se você usar
IgxTextHighlightDirective
, deve saber que apage
propriedade input está obsoleta.rowIndex
,columnIndex
epage
asIActiveHighlightInfo
propriedades da interface também estão obsoletas. Em vez disso,row
ecolumn
propriedades opcionais são adicionadas. - Se você usar o
button-theme
, você deve saber que o$button-roundness
foi substituído para cada tipo de botão por:$flat-border-radius
,$raised-border-radius
,$outline-border-radius
,$fab-border-radius
,$icon-border-radius
.
From 7.0.x to 7.1.x
Se você usa um IgxGrid com resumos em seu aplicativo, deve saber que agora o
IgxSummaryOperand.operate()
método é chamado com dados vazios para calcular a altura necessária para a linha de resumo. Para operandos de resumo personalizados, o método sempre deve retornar uma matriz de IgxSummaryResult com o comprimento adequado.Antes da versão 7.1:
export class CustomSummary extends IgxNumberSummaryOperand {
public operate(data?: any[]): IgxSummaryResult[] {
return [{
key: 'average',
label: 'average',
summaryResult: IgxNumberSummaryOperand.average(data).toFixed(2)
}];
}
}
Since version 7.1:
export class CustomSummary extends IgxNumberSummaryOperand {
public operate(data?: any[]): IgxSummaryResult[] {
return [{
key: 'average',
label: 'average',
summaryResult: data.length ? IgxNumberSummaryOperand.average(data).toFixed(2) : null
}];
}
}
From 6.0.x to 6.1.x
- Se você usar um controle IgxCombo em seu aplicativo e tiver definido a
itemsMaxWidth
opção, deverá alterar essa opção paraitemsWidth