Skip to content

Commit da85345

Browse files
authored
fix(tabs): Fix header migrations #9402 (#9411)
1 parent 031a60b commit da85345

File tree

2 files changed

+33
-13
lines changed

2 files changed

+33
-13
lines changed

projects/igniteui-angular/migrations/update-12_0_0/index.spec.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,13 @@ ${noteText}
166166
appTree.create(
167167
'/testSrc/appPrefix/component/custom.component.html', `
168168
<igx-tabs type="fixed">
169-
<igx-tab-item label="Tab1" icon="folder" routerLink="view1" [isSelected]="true" class="tabitem">
169+
<igx-tab-item routerLink="view1" [isSelected]="true" label="Tab1" icon="home" class="tabitem">
170+
<ng-template igxTab>
171+
<div class="horizontal-center">
172+
<igx-icon>playlist_add_check</igx-icon>
173+
<div class="igx-tabs__item-label" i18n>Strategies</div>
174+
</div>
175+
</ng-template>
170176
</igx-tab-item>
171177
</igx-tabs>`);
172178
const tree = await schematicRunner.runSchematicAsync('migration-20', {}, appTree)
@@ -178,8 +184,10 @@ ${noteText}
178184
<igx-tabs tabAlignment="justify">
179185
<igx-tab-item [selected]="true">
180186
<igx-tab-header routerLink="view1" class="tabitem">
181-
<igx-icon igxTabHeaderIcon>folder</igx-icon>
182-
<span igxTabHeaderLabel>Tab1</span>
187+
<div class="horizontal-center">
188+
<igx-icon>playlist_add_check</igx-icon>
189+
<div class="igx-tabs__item-label" i18n>Strategies</div>
190+
</div>
183191
</igx-tab-header>
184192
</igx-tab-item>
185193
</igx-tabs>`);
@@ -302,7 +310,10 @@ Some Content
302310
appTree.create(
303311
'/testSrc/appPrefix/component/custom.component.html', `
304312
<igx-bottom-nav>
305-
<igx-tab label="Tab1" icon="folder" routerLink="view1" class="igxtab">
313+
<igx-tab label="Tab1" icon="folder" routerLink="view1" class="igxtab" label="Tab1" icon="home">
314+
<ng-template igxTab>
315+
<div>Tab1</div>
316+
</ng-template>
306317
</igx-tab>
307318
</igx-bottom-nav>`);
308319
const tree = await schematicRunner.runSchematicAsync('migration-20', {}, appTree)
@@ -314,8 +325,7 @@ ${noteText}
314325
<igx-bottom-nav>
315326
<igx-bottom-nav-item>
316327
<igx-bottom-nav-header routerLink="view1" class="igxtab">
317-
<igx-icon igxBottomNavHeaderIcon>folder</igx-icon>
318-
<span igxBottomNavHeaderLabel>Tab1</span>
328+
<div>Tab1</div>
319329
</igx-bottom-nav-header>
320330
</igx-bottom-nav-item>
321331
</igx-bottom-nav>`);

projects/igniteui-angular/migrations/update-12_0_0/index.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ export default (): Rule => (host: Tree, context: SchematicContext) => {
1010
`Applying migration for Ignite UI for Angular to version ${version}`
1111
);
1212

13+
// eslint-disable-next-line max-len
14+
const UPDATE_NOTE = `<!--NOTE: This component has been updated by Infragistics migration: v${version}\nPlease check your template whether all bindings/event handlers are correct.-->\n`;
15+
1316
const COMPONENTS = [
1417
{
1518
component: 'igx-bottom-nav',
@@ -129,7 +132,7 @@ See https://www.infragistics.com/products/ignite-ui-angular/angular/components/t
129132
let labelText = '';
130133
if (hasAttribute(node, 'label')) {
131134
const labelAttr = getAttribute(node, 'label')[0];
132-
labelText = `\n<span ${comp.labelDirective}>${labelAttr.value}</span>\n`;
135+
labelText = `\n<span ${comp.labelDirective}>${labelAttr.value}</span>`;
133136
}
134137
// Icon content
135138
let iconText = '';
@@ -151,9 +154,17 @@ See https://www.infragistics.com/products/ignite-ui-angular/angular/components/t
151154
}
152155

153156
if (iconText || labelText || routerLinkText) {
154-
// eslint-disable-next-line max-len
155-
const tabHeader = `\n<${comp.headerItem}${routerLinkText}${classText}>${iconText}${labelText}</${comp.headerItem}>`;
156-
addChange(file.url, new FileChange(startTag.end, tabHeader));
157+
// Get igx-tab-header if it's present
158+
const headerNode = findElementNodes([offset.node], comp.headerItem)
159+
.map(hNode => getSourceOffset(hNode as Element));
160+
161+
if (headerNode && headerNode.length > 0) {
162+
addChange(file.url, new FileChange(headerNode[0].startTag.end - 1, `${routerLinkText}${classText}`));
163+
} else {
164+
// eslint-disable-next-line max-len
165+
const tabHeader = `\n<${comp.headerItem}${routerLinkText}${classText}>${iconText}${labelText}\n</${comp.headerItem}>`;
166+
addChange(file.url, new FileChange(startTag.end, tabHeader));
167+
}
157168
}
158169
});
159170

@@ -179,7 +190,7 @@ See https://www.infragistics.com/products/ignite-ui-angular/angular/components/t
179190
const tabContentTag = new RegExp(String.raw`${comp.panelItem}`);
180191
const hasTabContent = content.match(tabContentTag);
181192

182-
if ((!hasTabContent || hasTabContent.length === 0) && !isEmptyOrSpaces(content)) {
193+
if (!hasTabContent && !isEmptyOrSpaces(content)) {
183194
const tabPanel = `\n<${comp.panelItem}${classAttrText}>${content}</${comp.panelItem}>\n`;
184195
addChange(offset.file.url, new FileChange(tabHeader.sourceSpan.end.offset, tabPanel, content, 'replace'));
185196
}
@@ -195,8 +206,7 @@ See https://www.infragistics.com/products/ignite-ui-angular/angular/components/t
195206
map(node => getSourceOffset(node as Element)).
196207
forEach(offset => {
197208
const { startTag, file } = offset;
198-
// eslint-disable-next-line max-len
199-
const commentText = `<!--NOTE: This component has been updated by Infragistics migration: v${version}\nPlease check your template whether all bindings/event handlers are correct.-->\n`;
209+
const commentText = UPDATE_NOTE;
200210
addChange(file.url, new FileChange(startTag.start, commentText));
201211
});
202212

0 commit comments

Comments
 (0)