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-sizeCSS 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
showPivotConfigurationUIda 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
rowAdderowDeleteagora emitem argumento de evento do tipoIRowDataCancelableEventArgsem vez deIGridEditEventArgs. As duas interfaces ainda são compatíveis, no entanto, redundantes para essas propriedadescellIDde eventos,newValue,oldValue,estãoisAddRowobsoletas eIRowDataCancelableEventArgsserã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
rowIDfoi preterida nas seguintes interfaces:IGridEditDoneEventArgs,IPathSegment,IRowToggleEventArgs,IPinRowEventArgs,,eIgxAddRowParentserá removida em uma versão futura. UserowKeyem vez disso.primaryKeyfoi preterida nas seguintes interfaces:IRowDataEventArgs,IGridEditDoneEventArgs. UserowKeyem vez disso.datafoi preterida nas seguintes interfaces:IRowDataEventArgs. UserowDataem vez disso.
- Alterações significativas
Breaking changes
- Na versão 17.1.x, o
icon igxButtontipo da diretiva foi alterado para aigxIconButtondiretiva do tipoflat. As migrações automáticas estão disponíveis e serão aplicadasng update. No entanto, algumas dasigxButtonpropriedades de entrada que podiam ser usadas anteriormente com osiconbotões de texto não podem ser aplicadas ao recém-criadoigxIconButton. Se você usou asigxButtonColorpropriedades ou comigxButtonBackgroundum 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 updatecausará um erro nasigniteui-angularmigrações devido à modificaçãopackage-lock.jsoninadequada - mais detalhes podem ser encontrados aqui. Para atualizar para17.0.xuma das seguintes etapas adicionais, é necessário executar:- Exclua o arquivo antes de
package-lock.jsonexecutarng update - Executar
npm dedupe --legacy-peer-depsantes de correrng update igniteui-angular
- Exclua o arquivo antes de
Alteração significativa
- O tipo
IComboSelectionChangingEventArgsde argumentos de evento deselectionChangingInIgxCombotem estas alterações:- propriedades
newSelectioneoldSelectionforam renomeadas paranewValueeoldValuerespectivamente para refletir melhor sua função. Assim como o Combo, eles emitirão os valores de propriedade especificados ou itens de dados completos, dependendovalueKeyse estão definidos ou não. Migrações automáticasvalueestão disponíveis e serão aplicadasng update. - duas novas propriedades
newSelectioneoldSelectionsão expostas no lugar das antigas que não são mais afetadas evalueKeyemitem consistentemente itens de Combo.data - propriedades
addederemovedagora sempre contêm itens de dados, independentemente devalueKeyserem 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]
});
}
getCurrentResourceStringsfoi 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
DisplayDensityTokentoken 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, oDisplayDensityTokentoken de injeção agora está obsoleto. Isso se espalha por todos os componentes que expõem adisplayDensitypropriedade 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
NgModulesopera 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 eIgxGridModuleusando 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 oIgxPaginatorComponentna 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
rowSelectionChangingO tipo de argumentos é alterado. Agora, asoldSelectioncoleções ,newSelection,addedandremovedda interface não consistem mais nas chaves de linha dos elementos selecionados (quando a grade definiu um primaryKey), mas agora,IRowSelectionEventArgsem qualquer caso, os dados da linha são emitidos. Quando a grade estiver trabalhando com dados remotos e aprimaryKeyestiver 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,
rowSelectionChangingo 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 noigxCellmodelo)
- 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.jsonarquivo."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
--igxpara--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
graysargumento 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
graycor é 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-elevationsmixin.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
IgxGridToolbarTitleDirectiveeIgxGridToolbarActionsDirectiveforam 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 asigxGridToolbarTitlediretivas andigxGridToolbarActionsem 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.csstemas 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'
movablefoi preterida. Em vez disso, use a propriedade de grademovingexposta:
<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
hgridAPIigxHierarchicalGrid 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 positionfoi removida. Sugerimos usar apositionSettingspropriedade 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 supportIgxDialog- 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,igxTreeGridAlteração interruptiva- As seguintes entradas obsoletas foram removidas -
showToolbar,toolbarTitle,columnHiding,columnHidingTitle,hiddenColumnsText,columnPinning,,columnPinningTitle,.pinnedColumnsTextUseIgxGridToolbarComponent,IgxGridToolbarHidingComponent,IgxGridToolbarPinningComponentem vez disso.Alteração interruptiva- Ao adicionar um componente, agora você deve especificar manualmente quais recursos deseja habilitar - Ocultação de
igx-toolbarcoluna, fixação, exportação do Excel. A Filtragem Avançada pode ser habilitada por meio daallowAdvancedFilteringpropriedade input na grade, mas é recomendável habilitá-la declarativamente com marcação, como acontece com os outros recursos.Alteração interruptiva: o
rowSelectedevento é renomeado pararowSelectionChangingrefletir melhor sua função.Alteração interruptiva: o
columnSelectedevento é renomeado paracolumnSelectionChangingrefletir melhor sua função.Alteração interruptiva-
columnsCollectioné removido. Usecolumnsem vez disso. Se em determinadas ocasiõescolumnsretornar array vazio, consulte as colunas usandoViewChildrene 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_BASEtoken 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-
rowDataerowIDas propriedades são removidas deRowDirectivee para classes que implementam aRowTypeinterface. Usedataekeyem vez disso. Useng updatepara 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
groupStrategyentrada que funciona de formasortStrategysemelhante, 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
buttonTextexposta que define o texto exibido dentro do botão suspenso na barra de ferramentas.
- Nova entrada
IgxCombo- Adicionada
groupSortingDirectionentrada, 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,IgxSortAscendingHeaderIconDirectiveandIgxSortDescendingHeaderIconDirective.
- Adicionadas novas diretivas para remodelagem de indicadores de classificação de cabeçalho -
IgxDialog- Adicionada
focusTrapentrada 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, useigxGridcolumnsa entrada.
- Entrada
- Alteração interruptiva- A seguinte entrada foi removida
IgxCarousel- Alterações interruptivas- O tipo
CarouselAnimationTypede animação do carrossel é renomeado paraHorizontalAnimationType.
- Alterações interruptivas- O tipo
IgxGridStateDirective- agora suportadisableHidingsuporte de suporte de coluna e grupos de colunas
Temas
- A propriedade do componente
colorIcon foi preterida. Usestyle.colora 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
forwardedsã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
hslfunções ouhslaCSS.
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 Pagingrecursos, conforme descrito no tópico Paginação.IgxPageSizeSelectorComponenteIgxPageNavigationComponentsã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
*igxPaginatorhabilitar 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-contentconteú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
IgxGridTransactionfoi 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 { ... }getCellByColumnVisibleIndexagora está obsoleto e será removido na próxima versão principal. UsegetCellByKey,getCellByColumnem 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 IGridCellEventArgsnos argumentos de evento emitidos pelos eventos cellClick,selected,contextMenu e doubleClick agora é uma instância de IgxGridCelllet-cellno modelo de célula é agoraIgxGridCell.getCellByColumnVisibleIndexagora está obsoleto e será removido na próxima versão principal. UsegetCellByKey,getCellByColumnem 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:
IgxAvatarfoi 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 updatemigrarã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); } ```IgxButtonfoi 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 updatemigrarã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-themeparâ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
typographymixin não está mais incluídocoreimplicitamente. Para usar nossos estilos de tipografia, você deve incluir o mixin explicitamente antescoree depoistheme:
// in styles.scss @include core(); @include typography( $font-family: $material-typeface, $type-scale: $material-type-scale ); @include theme();Important
O
coremixin deve sempre ser incluído primeiro.Para cada tema incluído no Ignite UI for Angular fornecemos variáveis específicas
font-familyetype-scaleque 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 -
igxBottomNavHeaderLabelandigxBottomNavHeaderIcon. - Como o componente de cabeçalho agora permite adicionar qualquer conteúdo, a
igxTabdiretiva, 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
routerLinkdiretiva 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
idpropriedades ,itemStyle,panels,viewTabs,econtentTabs tabsforam removidas. Atualmente, aitemspropriedade retorna a coleção de guias. - As seguintes propriedades foram alteradas:
- A propriedade do item de
isSelectedguia foi renomeada paraselected. - A
selectedTabpropriedade foi renomeada paraselectedItem.
- A propriedade do item de
- Os
onTabSelectedeventos eonTabDeselectedforam removidos. Introduzimos três novos eventos,selectedIndexChanging,selectedIndexChangeandselectedItemChange, 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 -
igxTabHeaderLabelandigxTabHeaderIcon. - Como o componente de cabeçalho agora permite adicionar qualquer conteúdo, a
igxTabdiretiva, 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
routerLinkdiretiva 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
idpropriedades ,groups,viewTabs,econtentTabs tabsforam removidas. Atualmente, aitemspropriedade retorna a coleção de guias. - As seguintes propriedades foram alteradas:
- A propriedade do item de
isSelectedguia foi renomeada paraselected. - A
selectedTabItempropriedade foi reduzida paraselectedItem. - A
typepropriedade, com suas opções contentFit e fixed, não está mais disponível. O modo de dimensionamento e posicionamento do cabeçalho é atualmente controlado pelatabAlignmentpropriedade de entrada que aceita quatro valores diferentes - start (padrão), center, end e justify. O tipo antigocontentFitcorresponde ao valor de alinhamento atualstarte o tipo antigofixed- ao valor atualjustify.
- A propriedade do item de
- Os
tabItemSelectedeventos etabItemDeselectedforam removidos. Introduzimos três novos eventos,selectedIndexChanging,selectedIndexChangeandselectedItemChange, 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
expandeda 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
RowTypeobjeto, 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
disabledpropriedade foi removida. A propriedade era enganosa, pois o estado do grupo de entrada sempre foi gerenciado pelo subjacenteigxInput.- A execução
ng updatelidará com todas as instâncias nas quais[disabled]foi usado como modelos@Inputin. - Se você estiver fazendo referência à propriedade em um
.tsarquivo:
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:
disabledexport class CustomComponent { public input: IgxInputDirective ... this.input.disabled = false; }- A execução
IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent
- A
valuepropriedade para IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent agora aceita o formato de cadeia de caracteres ISO 8601. Isso significa que ovaluetipo pode serDateoustring. - A
inputFormatpropriedade de IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent agora não aceitaya 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
showToolbarpropriedade é 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
igxToolbarCustomContentdiretiva é 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
IgxExcelStyleSortingTemplateDirectivediretivas ,IgxExcelStyleHidingTemplateDirective,IgxExcelStyleMovingTemplateDirective,IgxExcelStylePinningTemplateDirective, eIgxExcelStyleSelectingTemplateDirectiveusadas 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 -IgxExcelStyleColumnOperationsTemplateDirectiveandIgxExcelStyleFilterOperationsTemplateDirective. 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 à
selectedRowspropriedade 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
flexparablock. 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
hideBaseOnDragas entradas evisibleestã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 ovisibilityestilo 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
animateOnReleaseedropFinished()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
IxgDropdiretiva não é mais aplicada por padrão, para continuar tendo o mesmo comportamento, você precisa definir a nova entradadropStrategypara 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
IgxDropEnterEventArgseIgxDropLeaveEventArgsdeve ser substituído porIDragBaseEventArgs.Além disso, qualquer uso da
IgxDropEventArgsinterface deve ser substituído porIDropDroppedEventArgs.
Diretiva IgxRowDragDirective
IRowDragStartEventArgseIRowDragEndEventArgster o nome do argumento alterado para ser mais claro sobre o que ele se refere.ownerargumento é renomeado paradragDirective. Oownerargumento 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-combode 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.valueKeyTodos os combos especificadosvalueKeydevem 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
valueKeydefinido, todos os eventos de seleção serão tratados com igualdade (===). Todos os combos que não têm umvalueKeyespecificado 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-paginatorcomponente é 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/coreo pacote primeiro. Isso está relacionado a este problema conhecido da CLI do Angular - Ao atualizar o
igniteui-angularpacote, 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/coree@angular/cliantes deigniteui-angularatualizar.
From 7.2.x or 7.3.x to 7.3.4
- Se você usar o
filterGlobalmétodo de,ouIgxHierarchicalGrid IgxGrid IgxTreeGrid, você deve saber que oconditionparâmetro não é mais opcional. Quando ofilterGlobalmé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 apagepropriedade input está obsoleta.rowIndex,columnIndexepageasIActiveHighlightInfopropriedades da interface também estão obsoletas. Em vez disso,rowecolumnpropriedades opcionais são adicionadas. - Se você usar o
button-theme, você deve saber que o$button-roundnessfoi 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
itemsMaxWidthopção, deverá alterar essa opção paraitemsWidth