igniteui-angular 15.0.16 → 15.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/grids/grid-base.directive.mjs +4 -3
- package/esm2020/lib/grids/tree-grid/tree-grid.pipes.mjs +4 -1
- package/esm2020/lib/services/excel/excel-files.mjs +2 -2
- package/esm2020/lib/services/excel/worksheet-data-dictionary.mjs +4 -17
- package/esm2020/lib/services/exporter-common/base-export-service.mjs +2 -2
- package/esm2020/lib/services/exporter-common/export-utilities.mjs +14 -1
- package/fesm2015/igniteui-angular.mjs +24 -20
- package/fesm2015/igniteui-angular.mjs.map +1 -1
- package/fesm2020/igniteui-angular.mjs +24 -20
- package/fesm2020/igniteui-angular.mjs.map +1 -1
- package/lib/services/excel/worksheet-data-dictionary.d.ts +1 -2
- package/lib/services/exporter-common/export-utilities.d.ts +1 -0
- package/package.json +1 -1
|
@@ -47,5 +47,18 @@ export class ExportUtilities {
|
|
|
47
47
|
static isNullOrWhitespaces(value) {
|
|
48
48
|
return value === undefined || value === null || !value.trim();
|
|
49
49
|
}
|
|
50
|
+
static sanitizeValue(value) {
|
|
51
|
+
if (!this.hasValue(value)) {
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const stringValue = String(value);
|
|
56
|
+
return stringValue.replace(/&/g, '&')
|
|
57
|
+
.replace(/</g, '<')
|
|
58
|
+
.replace(/>/g, '>')
|
|
59
|
+
.replace(/"/g, '"')
|
|
60
|
+
.replace(/'/g, ''');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
50
63
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9leHBvcnRlci1jb21tb24vZXhwb3J0LXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQ2pCLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBVztRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNkLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV2QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6QyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhELE9BQU8sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQVUsRUFBRSxRQUFRO1FBQzdDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFdEIsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQVM7UUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDakMsK0JBQStCO1NBQ2xDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFTO1FBQ2pDLE9BQU8sQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRO1lBQzVCLE9BQU8sSUFBSSxLQUFLLFFBQVE7WUFDeEIsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQVU7UUFDN0IsT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7SUFDakQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFhO1FBQzNDLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQVU7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2lCQUN0QixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztpQkFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7aUJBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2lCQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzlDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNsYXNzIEV4cG9ydFV0aWxpdGllcyB7XG4gICAgcHVibGljIHN0YXRpYyBnZXRLZXlzRnJvbURhdGEoZGF0YTogYW55W10pIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGFFbnRyeSA9IGRhdGFbMF07XG4gICAgICAgIGNvbnN0IGRhdGFFbnRyeU1pZGRsZSA9IGRhdGFbTWF0aC5mbG9vcihsZW5ndGggLyAyKV07XG4gICAgICAgIGNvbnN0IGRhdGFFbnRyeUxhc3QgPSBkYXRhW2xlbmd0aCAtIDFdO1xuXG4gICAgICAgIGNvbnN0IGtleXMxID0gT2JqZWN0LmtleXMoZGF0YUVudHJ5KTtcbiAgICAgICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhkYXRhRW50cnlNaWRkbGUpO1xuICAgICAgICBjb25zdCBrZXlzMyA9IE9iamVjdC5rZXlzKGRhdGFFbnRyeUxhc3QpO1xuXG4gICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KGtleXMxLmNvbmNhdChrZXlzMikuY29uY2F0KGtleXMzKSk7XG5cbiAgICAgICAgcmV0dXJuICFFeHBvcnRVdGlsaXRpZXMuaXNTcGVjaWFsRGF0YShkYXRhRW50cnkpID8gQXJyYXkuZnJvbShrZXlzKSA6IFsnQ29sdW1uIDEnXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNhdmVCbG9iVG9GaWxlKGJsb2I6IEJsb2IsIGZpbGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG5cbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG4gICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHJpbmdUb0FycmF5QnVmZmVyKHM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHtcbiAgICAgICAgY29uc3QgYnVmID0gbmV3IEFycmF5QnVmZmVyKHMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAgbm8tYml0d2lzZSAqL1xuICAgICAgICAgICAgdmlld1tpXSA9IHMuY2hhckNvZGVBdChpKSAmIDB4RkY7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlICBuby1iaXR3aXNlICovXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzU3BlY2lhbERhdGEoZGF0YTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICB0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgICAgIGRhdGEgaW5zdGFuY2VvZiBEYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc1ZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc051bGxPcldoaXRlc3BhY2VzKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgIXZhbHVlLnRyaW0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNhbml0aXplVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZS5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCAnJmFwb3M7Jyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -2124,6 +2124,19 @@ class ExportUtilities {
|
|
|
2124
2124
|
static isNullOrWhitespaces(value) {
|
|
2125
2125
|
return value === undefined || value === null || !value.trim();
|
|
2126
2126
|
}
|
|
2127
|
+
static sanitizeValue(value) {
|
|
2128
|
+
if (!this.hasValue(value)) {
|
|
2129
|
+
return '';
|
|
2130
|
+
}
|
|
2131
|
+
else {
|
|
2132
|
+
const stringValue = String(value);
|
|
2133
|
+
return stringValue.replace(/&/g, '&')
|
|
2134
|
+
.replace(/</g, '<')
|
|
2135
|
+
.replace(/>/g, '>')
|
|
2136
|
+
.replace(/"/g, '"')
|
|
2137
|
+
.replace(/'/g, ''');
|
|
2138
|
+
}
|
|
2139
|
+
}
|
|
2127
2140
|
}
|
|
2128
2141
|
|
|
2129
2142
|
var FilteringExpressionsTreeType;
|
|
@@ -3414,7 +3427,7 @@ class IgxBaseExporter {
|
|
|
3414
3427
|
.length :
|
|
3415
3428
|
1;
|
|
3416
3429
|
const columnInfo = {
|
|
3417
|
-
header: columnHeader,
|
|
3430
|
+
header: ExportUtilities.sanitizeValue(columnHeader),
|
|
3418
3431
|
dataType: column.dataType,
|
|
3419
3432
|
field: column.field,
|
|
3420
3433
|
skip: !exportColumn,
|
|
@@ -4668,7 +4681,7 @@ class WorksheetFile {
|
|
|
4668
4681
|
const rowCoordinate = isVertical
|
|
4669
4682
|
? startValue + owner.maxLevel + 2
|
|
4670
4683
|
: this.rowIndex;
|
|
4671
|
-
const columnValue = dictionary.saveValue(currentCol.header, true);
|
|
4684
|
+
const columnValue = dictionary.saveValue(currentCol.header, true, false);
|
|
4672
4685
|
columnCoordinate = (currentCol.field === GRID_LEVEL_COL
|
|
4673
4686
|
? ExcelStrings.getExcelColumn(worksheetData.columnCount + 1)
|
|
4674
4687
|
: ExcelStrings.getExcelColumn(column)) + rowCoordinate;
|
|
@@ -5013,12 +5026,12 @@ class WorksheetDataDictionary {
|
|
|
5013
5026
|
get columnWidths() {
|
|
5014
5027
|
return this._columnWidths;
|
|
5015
5028
|
}
|
|
5016
|
-
saveValue(value, isHeader) {
|
|
5029
|
+
saveValue(value, isHeader, shouldSanitizeValue = true) {
|
|
5017
5030
|
let sanitizedValue = '';
|
|
5018
5031
|
const isDate = value instanceof Date;
|
|
5019
5032
|
const isSavedAsString = isHeader || (typeof value !== 'number' && value !== Number(value) && !Number.isFinite(value) && !isDate);
|
|
5020
5033
|
if (isSavedAsString) {
|
|
5021
|
-
sanitizedValue =
|
|
5034
|
+
sanitizedValue = shouldSanitizeValue ? ExportUtilities.sanitizeValue(value) : value;
|
|
5022
5035
|
if (this._dictionary[sanitizedValue] === undefined) {
|
|
5023
5036
|
this._dictionary[sanitizedValue] = this._counter++;
|
|
5024
5037
|
this.dirtyKeyCollections();
|
|
@@ -5034,7 +5047,7 @@ class WorksheetDataDictionary {
|
|
|
5034
5047
|
return isSavedAsString ? this.getSanitizedValue(sanitizedValue) : -1;
|
|
5035
5048
|
}
|
|
5036
5049
|
getValue(value) {
|
|
5037
|
-
return this.getSanitizedValue(
|
|
5050
|
+
return this.getSanitizedValue(ExportUtilities.sanitizeValue(value));
|
|
5038
5051
|
}
|
|
5039
5052
|
getSanitizedValue(sanitizedValue) {
|
|
5040
5053
|
return this._dictionary[sanitizedValue];
|
|
@@ -5062,19 +5075,6 @@ class WorksheetDataDictionary {
|
|
|
5062
5075
|
}
|
|
5063
5076
|
return this._context;
|
|
5064
5077
|
}
|
|
5065
|
-
sanitizeValue(value) {
|
|
5066
|
-
if (ExportUtilities.hasValue(value) === false) {
|
|
5067
|
-
return '';
|
|
5068
|
-
}
|
|
5069
|
-
else {
|
|
5070
|
-
const stringValue = String(value);
|
|
5071
|
-
return stringValue.replace(/&/g, '&')
|
|
5072
|
-
.replace(/</g, '<')
|
|
5073
|
-
.replace(/>/g, '>')
|
|
5074
|
-
.replace(/"/g, '"')
|
|
5075
|
-
.replace(/'/g, ''');
|
|
5076
|
-
}
|
|
5077
|
-
}
|
|
5078
5078
|
dirtyKeyCollections() {
|
|
5079
5079
|
this._keysAreValid = false;
|
|
5080
5080
|
}
|
|
@@ -67162,9 +67162,10 @@ class IgxGridBaseDirective extends DisplayDensityBase {
|
|
|
67162
67162
|
columnsArray = this.getSelectableColumnsAt(each);
|
|
67163
67163
|
columnsArray.forEach((col) => {
|
|
67164
67164
|
if (col) {
|
|
67165
|
-
const key = headers ? col.header || col.field : col.field;
|
|
67165
|
+
const key = !this.isPivot && headers ? col.header || col.field : col.field;
|
|
67166
67166
|
const rowData = source[row].ghostRecord ? source[row].recordRef : source[row];
|
|
67167
|
-
const value =
|
|
67167
|
+
const value = this.isPivot ? rowData.aggregationValues.get(col.field)
|
|
67168
|
+
: resolveNestedPath(rowData, col.field);
|
|
67168
67169
|
record[key] = formatters && col.formatter ? col.formatter(value, rowData) : value;
|
|
67169
67170
|
if (columnData) {
|
|
67170
67171
|
if (!record[key]) {
|
|
@@ -79064,6 +79065,9 @@ class IgxTreeGridHierarchizingPipe {
|
|
|
79064
79065
|
const treeGridRecordsMap = new Map();
|
|
79065
79066
|
const flatData = [];
|
|
79066
79067
|
if (!collection || !collection.length) {
|
|
79068
|
+
this.grid.flatData = collection;
|
|
79069
|
+
this.grid.records = treeGridRecordsMap;
|
|
79070
|
+
this.grid.rootRecords = collection;
|
|
79067
79071
|
return collection;
|
|
79068
79072
|
}
|
|
79069
79073
|
if (childDataKey) {
|