Skip to content

Commit a647cad

Browse files
Merge branch '18.2.x' into mkirkova/fix-14906
2 parents 0d69c2f + c5a5d85 commit a647cad

File tree

8 files changed

+83
-52
lines changed

8 files changed

+83
-52
lines changed

.github/workflows/codeql-analysis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ name: "CodeQL"
1313

1414
on:
1515
push:
16-
branches: [ master, 18.1.x, 17.2.x, 16.1.x, 15.1.x ]
16+
branches: [ master, 18.2.x, 17.2.x, 16.1.x, 15.1.x ]
1717
pull_request:
1818
# The branches below must be a subset of the branches above
19-
branches: [ master, 18.1.x, 17.2.x, 16.1.x, 15.1.x ]
19+
branches: [ master, 18.2.x, 17.2.x, 16.1.x, 15.1.x ]
2020
schedule:
2121
- cron: '33 4 * * 4'
2222

projects/igniteui-angular/src/lib/combo/combo.component.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,7 +2066,7 @@ describe('igxCombo', () => {
20662066
spyOn(combo.dropdown, 'onToggleClosing').and.callThrough();
20672067
spyOn(combo.dropdown, 'onToggleClosed').and.callThrough();
20682068
combo.toggle();
2069-
await wait(30);
2069+
await wait();
20702070
fixture.detectChanges();
20712071
expect(combo.collapsed).toEqual(false);
20722072
expect(combo.dropdown.onToggleOpening).toHaveBeenCalledTimes(1);
@@ -2075,17 +2075,17 @@ describe('igxCombo', () => {
20752075
expect(virtDir.getScroll().scrollTop).toEqual(0);
20762076
expect(vContainerScrollHeight).toBeGreaterThan(combo.itemHeight);
20772077
virtDir.getScroll().scrollTop = Math.floor(vContainerScrollHeight / 2);
2078-
await wait(30);
2078+
await firstValueFrom(combo.virtualScrollContainer.chunkLoad);
20792079
fixture.detectChanges();
20802080
expect(virtDir.getScroll().scrollTop).toBeGreaterThan(0);
20812081
UIInteractions.simulateClickEvent(document.documentElement);
2082-
await wait(10);
2082+
await wait();
20832083
fixture.detectChanges();
20842084
expect(combo.collapsed).toEqual(true);
20852085
expect(combo.dropdown.onToggleClosing).toHaveBeenCalledTimes(1);
20862086
expect(combo.dropdown.onToggleClosed).toHaveBeenCalledTimes(1);
20872087
combo.toggle();
2088-
await wait(30);
2088+
await wait();
20892089
fixture.detectChanges();
20902090
expect(combo.collapsed).toEqual(false);
20912091
expect(combo.dropdown.onToggleOpening).toHaveBeenCalledTimes(2);

projects/igniteui-angular/src/lib/navigation-drawer/navigation-drawer.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
[class.igx-nav-drawer--disable-animation]="disableAnimation"
1515
(click)="close()" #overlay>
1616
</div>
17-
<aside role="navigation"
17+
<nav
1818
class="igx-nav-drawer__aside"
1919
[class.igx-nav-drawer__aside--collapsed]="!miniTemplate && !isOpen"
2020
[class.igx-nav-drawer__aside--mini]="miniTemplate && !isOpen"
@@ -24,5 +24,5 @@
2424
[class.igx-nav-drawer--disable-animation]="disableAnimation">
2525

2626
<ng-container *ngTemplateOutlet="template || defaultItemsTemplate"></ng-container>
27-
</aside>
27+
</nav>
2828
<div class="igx-nav-drawer__style-dummy" #dummy></div>

projects/igniteui-angular/src/lib/navigation-drawer/navigation-drawer.component.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ describe('Navigation Drawer', () => {
203203
fixture.detectChanges();
204204

205205
expect(fixture.componentInstance.navDrawer.hasAnimateWidth).toBeTruthy();
206-
expect(fixture.debugElement.query((x) => x.nativeNode.nodeName === 'ASIDE').nativeElement.classList)
206+
expect(fixture.debugElement.query(By.css('.igx-nav-drawer__aside')).nativeElement.classList)
207207
.toContain('igx-nav-drawer__aside--mini');
208208
}).catch((reason) => Promise.reject(reason));
209209
}));
@@ -262,7 +262,7 @@ describe('Navigation Drawer', () => {
262262
fixture.detectChanges();
263263

264264
expect(fixture.componentInstance.navDrawer.pin).toBeTruthy();
265-
expect(fixture.debugElement.query((x) => x.nativeNode.nodeName === 'ASIDE').nativeElement.classList)
265+
expect(fixture.debugElement.query(By.css('.igx-nav-drawer__aside')).nativeElement.classList)
266266
.toContain('igx-nav-drawer__aside--pinned');
267267

268268
expect(fixture.componentInstance.navDrawer.enableGestures).toBe(false);
@@ -291,7 +291,7 @@ describe('Navigation Drawer', () => {
291291
fixture.detectChanges();
292292
const windowHeight = window.innerHeight;
293293
const container = fixture.debugElement.query(By.css('div')).nativeElement;
294-
const navdrawer = fixture.debugElement.query(By.css('igx-nav-drawer > aside')).nativeElement;
294+
const navdrawer = fixture.debugElement.query(By.css('igx-nav-drawer > .igx-nav-drawer__aside')).nativeElement;
295295

296296
fixture.componentInstance.pin = false;
297297
fixture.detectChanges();
@@ -484,7 +484,7 @@ describe('Navigation Drawer', () => {
484484
fixture.detectChanges();
485485

486486
// const comp: DebugElement = fixture.debugElement.query(By.component(IgxNavbarComponent));
487-
const asideElem = fixture.debugElement.query(By.css('igx-nav-drawer > aside')).nativeElement;
487+
const asideElem = fixture.debugElement.query(By.css('igx-nav-drawer > .igx-nav-drawer__aside')).nativeElement;
488488

489489
const computedStyle = window.getComputedStyle(asideElem);
490490
let asideWidth = computedStyle.getPropertyValue('width');

projects/igniteui-angular/src/lib/services/excel/excel-exporter.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,21 @@ describe('Excel Exporter', () => {
134134
await wrapper.verifyDataFilesContent(actualData.contactsDataSkippedColumnContent);
135135
});
136136

137+
it('should not fail when data contains null characters (#14944).', async () => {
138+
options.columnWidth = 50;
139+
const wrapper = await getExportedData([
140+
'Terrance\u0000Orta',
141+
'Richard Mahoney\x00LongerName',
142+
'Donna\0Price',
143+
'Lisa Landers',
144+
'Dorothy H. Spencer'
145+
], options);
146+
147+
wrapper.verifyStructure();
148+
await wrapper.verifyTemplateFilesContent();
149+
await wrapper.verifyDataFilesContent(actualData.noHeadersStringDataWithNullChars);
150+
});
151+
137152
const getExportedData = (data: any[], exportOptions: IgxExcelExporterOptions) => {
138153
const result = new Promise<ZipWrapper>((resolve) => {
139154
exporter.exportEnded.pipe(first()).subscribe((value) => {

projects/igniteui-angular/src/lib/services/excel/test-data.service.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1935,4 +1935,22 @@ export class FileContentData {
19351935

19361936
return this.createData();
19371937
}
1938+
1939+
public get noHeadersStringDataWithNullChars() {
1940+
this._sharedStringsData = `count="6" uniqueCount="6"><si><t>Column1</t></si><si><t>TerranceOrta</t></si>` +
1941+
`<si><t>Richard MahoneyLongerName</t></si><si><t>DonnaPrice</t></si><si><t>Lisa Landers</t></si><si><t>` +
1942+
`Dorothy H. Spencer</t></si>`;
1943+
1944+
this._tableData = `ref="A1:A6" totalsRowShown="0"><autoFilter ref="A1:A6"/><tableColumns count="1">` +
1945+
`<tableColumn id="1" name="Column1"/></tableColumns>`;
1946+
1947+
this._worksheetData = `<dimension ref="A1:A6"/><sheetViews><sheetView tabSelected="1" workbookViewId="0"></sheetView>` +
1948+
`</sheetViews><sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/><cols><col min="1" max="1" ` +
1949+
`width="50" customWidth="1"/></cols><sheetData><row r="1"><c r="A1" t="s"><v>0</v></c></row><row r="2">` +
1950+
`<c r="A2" t="s"><v>1</v></c></row><row r="3"><c r="A3" t="s"><v>2</v></c></row><row r="4"><c r="A4" t="s"><v>3</v>` +
1951+
`</c></row><row r="5"><c r="A5" t="s"><v>4</v></c></row><row r="6"><c r="A6" t="s"><v>5</v></c></row></sheetData>`;
1952+
1953+
return this.createData();
1954+
}
1955+
19381956
}

projects/igniteui-angular/src/lib/services/exporter-common/export-utilities.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ export class ExportUtilities {
6868
.replace(/</g, '&lt;')
6969
.replace(/>/g, '&gt;')
7070
.replace(/"/g, '&quot;')
71-
.replace(/'/g, '&apos;');
71+
.replace(/'/g, '&apos;')
72+
// Bug #14944 - Remove the not supported null character (\u0000, \x00)
73+
.replace(/\x00/g, '');
7274
}
7375
}
7476
}

src/app/app.component.html

Lines changed: 35 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,54 @@
55
[(pin)]="drawerState.pin" [position]="drawerState.position">
66

77
<ng-template igxDrawer>
8-
<nav>
9-
<div class="nav-header"></div>
8+
<div class="nav-header"></div>
109

11-
<!-- Components -->
12-
<span igxDrawerItem [isHeader]="true">Components</span>
10+
<!-- Components -->
11+
<span igxDrawerItem [isHeader]="true">Components</span>
1312

14-
<span *ngFor="let item of componentLinks" igxDrawerItem igxRipple routerLinkActive="igx-nav-drawer__item--active" routerLink="{{item.link}}">
15-
<igx-icon>{{item.icon}}</igx-icon>
16-
<span class="navdrawer-ellipsis">{{item.name}}</span>
17-
</span>
13+
<span *ngFor="let item of componentLinks" igxDrawerItem igxRipple routerLinkActive="igx-nav-drawer__item--active" routerLink="{{item.link}}">
14+
<igx-icon>{{item.icon}}</igx-icon>
15+
<span class="navdrawer-ellipsis">{{item.name}}</span>
16+
</span>
1817

19-
<span igxDrawerItem [disabled]="true">
20-
<igx-icon>web</igx-icon>
21-
<span class="navdrawer-ellipsis">Disabled Item</span>
22-
</span>
18+
<span igxDrawerItem [disabled]="true">
19+
<igx-icon>web</igx-icon>
20+
<span class="navdrawer-ellipsis">Disabled Item</span>
21+
</span>
2322

24-
<!--Directives-->
25-
<span igxDrawerItem [isHeader]="true">Directives</span>
23+
<!--Directives-->
24+
<span igxDrawerItem [isHeader]="true">Directives</span>
2625

27-
<span *ngFor="let item of directiveLinks" igxDrawerItem igxRipple routerLinkActive="igx-nav-drawer__item--active" routerLink="{{item.link}}">
28-
<igx-icon>{{item.icon}}</igx-icon>
29-
<span class="navdrawer-ellipsis">{{item.name}}</span>
30-
</span>
26+
<span *ngFor="let item of directiveLinks" igxDrawerItem igxRipple routerLinkActive="igx-nav-drawer__item--active" routerLink="{{item.link}}">
27+
<igx-icon>{{item.icon}}</igx-icon>
28+
<span class="navdrawer-ellipsis">{{item.name}}</span>
29+
</span>
3130

32-
<!--Style guide-->
33-
<span igxDrawerItem [isHeader]="true">Style</span>
31+
<!--Style guide-->
32+
<span igxDrawerItem [isHeader]="true">Style</span>
3433

35-
<span *ngFor="let item of styleLinks" igxDrawerItem igxRipple routerLinkActive="igx-nav-drawer__item--active" routerLink="{{item.link}}">
36-
<igx-icon>{{item.icon}}</igx-icon>
37-
<span class="navdrawer-ellipsis">{{item.name}}</span>
38-
</span>
39-
</nav>
34+
<span *ngFor="let item of styleLinks" igxDrawerItem igxRipple routerLinkActive="igx-nav-drawer__item--active" routerLink="{{item.link}}">
35+
<igx-icon>{{item.icon}}</igx-icon>
36+
<span class="navdrawer-ellipsis">{{item.name}}</span>
37+
</span>
4038
</ng-template>
4139

4240
<ng-template *ngIf="drawerState.miniVariant" igxDrawerMini>
43-
<nav>
44-
<span *ngFor="let item of componentLinks" igxRipple igxDrawerItem routerLinkActive #rla="routerLinkActive" [active]="rla.isActive" routerLink="{{item.link}}">
45-
<igx-icon>{{item.icon}}</igx-icon>
46-
</span>
41+
<span *ngFor="let item of componentLinks" igxRipple igxDrawerItem routerLinkActive #rla="routerLinkActive" [active]="rla.isActive" routerLink="{{item.link}}">
42+
<igx-icon>{{item.icon}}</igx-icon>
43+
</span>
4744

48-
<span igxDrawerItem [disabled]="true">
49-
<igx-icon>web</igx-icon>
50-
</span>
45+
<span igxDrawerItem [disabled]="true">
46+
<igx-icon>web</igx-icon>
47+
</span>
5148

52-
<span *ngFor="let item of directiveLinks" igxDrawerItem igxRipple routerLinkActive #rla="routerLinkActive" [active]="rla.isActive" routerLink="{{item.link}}">
53-
<igx-icon>{{item.icon}}</igx-icon>
54-
</span>
49+
<span *ngFor="let item of directiveLinks" igxDrawerItem igxRipple routerLinkActive #rla="routerLinkActive" [active]="rla.isActive" routerLink="{{item.link}}">
50+
<igx-icon>{{item.icon}}</igx-icon>
51+
</span>
5552

56-
<span *ngFor="let item of styleLinks" igxDrawerItem igxRipple routerLinkActive #rla="routerLinkActive" [active]="rla.isActive" routerLink="{{item.link}}">
57-
<igx-icon>{{item.icon}}</igx-icon>
58-
</span>
59-
</nav>
53+
<span *ngFor="let item of styleLinks" igxDrawerItem igxRipple routerLinkActive #rla="routerLinkActive" [active]="rla.isActive" routerLink="{{item.link}}">
54+
<igx-icon>{{item.icon}}</igx-icon>
55+
</span>
6056
</ng-template>
6157
</igx-nav-drawer>
6258

0 commit comments

Comments
 (0)