Skip to content

Commit 3921462

Browse files
committed
Merge master into SKrastev/grid-disabled-pin-row
2 parents 5799e90 + b4b587a commit 3921462

File tree

13 files changed

+93
-46
lines changed

13 files changed

+93
-46
lines changed

package-lock.json

Lines changed: 12 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,12 @@
5353
"@angular/platform-browser-dynamic": "^9.1.0",
5454
"@angular/router": "^9.1.0",
5555
"@types/hammerjs": "^2.0.36",
56+
"@types/jszip": "^3.1.7",
5657
"@types/source-map": "0.5.2",
5758
"classlist.js": "^1.1.20150312",
5859
"core-js": "^2.6.2",
5960
"hammerjs": "^2.0.8",
60-
"jszip": "^3.1.5",
61+
"jszip": "^3.3.0",
6162
"resize-observer-polyfill": "^1.5.1",
6263
"rxjs": "^6.5.4",
6364
"tslib": "^1.10.0",

projects/igniteui-angular/ng-package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
},
88
"whitelistedNonPeerDependencies": [
99
"@types/hammerjs",
10+
"@types/jszip",
1011
"hammerjs",
1112
"jszip",
1213
"resize-observer-polyfill"

projects/igniteui-angular/ng-package.prod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
"lib": {
55
"entryFile": "src/public_api.ts",
66
"umdModuleIds": {
7-
"jszip/dist/jszip": "JSZip",
87
"resize-observer-polyfill": "ResizeObserver"
98
}
109
},
1110
"whitelistedNonPeerDependencies": [
1211
"@types/hammerjs",
12+
"@types/jszip",
1313
"hammerjs",
1414
"jszip",
1515
"resize-observer-polyfill"

projects/igniteui-angular/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@
6767
],
6868
"dependencies": {
6969
"@types/hammerjs": "^2.0.36",
70+
"@types/jszip": "^3.1.7",
7071
"hammerjs": "^2.0.8",
71-
"jszip": "^3.1.5",
72+
"jszip": "^3.3.0",
7273
"resize-observer-polyfill": "^1.5.1"
7374
},
7475
"peerDependencies": {

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-search.component.html

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,12 @@
3030
[indeterminate]="item.indeterminate"
3131
[disableTransitions]="true"
3232
(change)="onCheckboxChange($event)">
33-
{{ column.formatter && !item.isSpecial ? column.formatter(item.label) : column.dataType === 'number' ? (item.label | igxdecimal:
34-
column.grid.locale) : column.dataType === 'date' ? (item.label | igxdate: column.grid.locale) : item.label }}
33+
{{ item.label }}
3534
</igx-checkbox>
3635
</igx-list-item>
3736
</div>
3837

39-
<ng-template igxDataLoading>
38+
<ng-template igxDataLoading>
4039
<div class="igx-excel-filter__loading">
4140
<ng-container *ngTemplateOutlet="valuesLoadingTemplate">
4241
</ng-container>

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-search.pipe.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ export class IgxExcelStyleSearchFilterPipe implements PipeTransform {
2020

2121
searchText = searchText.toLowerCase();
2222
const result = items.filter((it, i) => (i === 0 && it.isSpecial) ||
23-
(it.value !== null && it.value !== undefined) &&
24-
it.value.toString().toLowerCase().indexOf(searchText) > -1);
23+
(it.label !== null && it.label !== undefined) &&
24+
!it.isBlanks &&
25+
it.label.toString().toLowerCase().indexOf(searchText) > -1);
2526

2627
// If 'result' contains the 'Select All' item and at least one more - we use it, otherwise we use an empty array.
2728
return result.length > 1 ? result : [];

projects/igniteui-angular/src/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import { IgxColumnComponent } from '../../columns/column.component';
4141
import { IgxGridBaseDirective } from '../../grid-base.directive';
4242
import { DisplayDensity } from '../../../core/density';
4343
import { GridSelectionMode } from '../../common/enums';
44+
import { IgxDecimalPipeComponent, IgxDatePipeComponent } from '../../common/pipes';
4445

4546
/**
4647
* @hidden
@@ -51,6 +52,7 @@ export class FilterListItem {
5152
public isSelected: boolean;
5253
public indeterminate: boolean;
5354
public isSpecial = false;
55+
public isBlanks = false;
5456
}
5557

5658
@Directive({
@@ -712,6 +714,10 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy {
712714
private addItems(shouldUpdateSelection: boolean) {
713715
this.selectAllSelected = true;
714716
this.selectAllIndeterminate = false;
717+
718+
const numberPipe = new IgxDecimalPipeComponent(this.column.grid.locale);
719+
const datePipe = new IgxDatePipeComponent(this.column.grid.locale);
720+
715721
this.uniqueValues.forEach(element => {
716722
if (element !== undefined && element !== null && element !== '') {
717723
const filterListItem = new FilterListItem();
@@ -731,12 +737,29 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy {
731737
filterListItem.isSelected = true;
732738
}
733739
if (this.column.dataType === DataType.Date) {
734-
filterListItem.value = new Date(element);
735-
filterListItem.label = new Date(element);
740+
const date = new Date(element);
741+
742+
filterListItem.value = date;
743+
744+
filterListItem.label = this.column.formatter ?
745+
this.column.formatter(date) :
746+
datePipe.transform(date, this.column.grid.locale);
747+
748+
} else if (this.column.dataType === DataType.Number) {
749+
filterListItem.value = element;
750+
751+
filterListItem.label = this.column.formatter ?
752+
this.column.formatter(element) :
753+
numberPipe.transform(element, this.column.grid.locale);
754+
736755
} else {
737756
filterListItem.value = element;
738-
filterListItem.label = element;
757+
758+
filterListItem.label = this.column.formatter ?
759+
this.column.formatter(element) :
760+
element;
739761
}
762+
740763
filterListItem.indeterminate = false;
741764
this.listData.push(filterListItem);
742765
} else {
@@ -772,6 +795,7 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy {
772795
blanks.label = this.grid.resourceStrings.igx_grid_excel_blanks;
773796
blanks.indeterminate = false;
774797
blanks.isSpecial = true;
798+
blanks.isBlanks = true;
775799
this.listData.unshift(blanks);
776800
}
777801

projects/igniteui-angular/src/lib/grids/grid/grid-filtering-ui.spec.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4264,6 +4264,34 @@ describe('IgxGrid - Filtering actions - Excel style filtering #grid', () => {
42644264
excelMenu = GridFunctions.getExcelStyleFilteringComponent(fix);
42654265
expect(excelMenu).toBeNull();
42664266
}));
4267+
4268+
it('Should filter date by input string', fakeAsync(() => {
4269+
GridFunctions.clickExcelFilterIcon(fix, 'ReleaseDate');
4270+
tick(100);
4271+
fix.detectChanges();
4272+
4273+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
4274+
let listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
4275+
const inputNativeElement = GridFunctions.getExcelStyleSearchComponentInput(fix, searchComponent);
4276+
4277+
const todayDateFull = SampleTestData.today;
4278+
const todayDate = todayDateFull.getDate().toString();
4279+
const dayOfWeek = todayDateFull.toString().substring(0, 3);
4280+
4281+
UIInteractions.sendInputElementValue(inputNativeElement, todayDate, fix);
4282+
tick(100);
4283+
fix.detectChanges();
4284+
4285+
listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
4286+
expect(listItems.length).toBe(4, 'incorrect rendered list items count');
4287+
4288+
UIInteractions.sendInputElementValue(inputNativeElement, dayOfWeek, fix);
4289+
tick(100);
4290+
fix.detectChanges();
4291+
4292+
listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
4293+
expect(listItems.length).toBe(0, 'incorrect rendered list items count');
4294+
}));
42674295
});
42684296

42694297
describe(null, () => {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as JSZip from 'jszip/dist/jszip';
1+
import * as JSZip from 'jszip';
22

33
import { EventEmitter, Injectable, Output } from '@angular/core';
44
import { ExcelElementsFactory } from './excel-elements-factory';
@@ -38,7 +38,7 @@ export interface IExcelExportEndedEventArgs extends IBaseEventArgs {
3838
@Injectable()
3939
export class IgxExcelExporterService extends IgxBaseExporter {
4040

41-
private static ZIP_OPTIONS = { compression: 'DEFLATE', type: 'base64' };
41+
private static ZIP_OPTIONS = { compression: 'DEFLATE', type: 'base64' } as JSZip.JSZipGeneratorOptions<'base64'>;
4242
private _xlsx: JSZip;
4343

4444
/**

0 commit comments

Comments
 (0)