@snack-uikit/table 0.37.16 → 0.37.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/CHANGELOG.md +8 -0
- package/dist/cjs/exportTable.js +12 -2
- package/dist/esm/exportTable.js +17 -2
- package/package.json +2 -2
- package/src/exportTable.ts +20 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## <small>0.37.17 (2025-11-25)</small>
|
|
7
|
+
|
|
8
|
+
* fix(HCE-284): fix array handling in Excel and CSV export table ([db438a0](https://github.com/cloud-ru-tech/snack-uikit/commit/db438a0))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## <small>0.37.16 (2025-11-21)</small>
|
|
7
15
|
|
|
8
16
|
* fix(IAM-5889): fix table loading state ([27646e0](https://github.com/cloud-ru-tech/snack-uikit/commit/27646e0))
|
package/dist/cjs/exportTable.js
CHANGED
|
@@ -41,7 +41,12 @@ function getXlsxFormatTable(_ref) {
|
|
|
41
41
|
result.push('');
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
const value = lineRecord[key];
|
|
45
|
+
if (Array.isArray(value)) {
|
|
46
|
+
result.push(value.join(', '));
|
|
47
|
+
} else {
|
|
48
|
+
result.push(value !== null && value !== void 0 ? value : '');
|
|
49
|
+
}
|
|
45
50
|
});
|
|
46
51
|
return result;
|
|
47
52
|
});
|
|
@@ -59,7 +64,12 @@ function exportToCSV(_ref2) {
|
|
|
59
64
|
});
|
|
60
65
|
const headers = getFilteredColumnsHeaders(columnDefinitions);
|
|
61
66
|
const table = [headers, ...xlsxData];
|
|
62
|
-
const csv = table.map(line => line.map(el =>
|
|
67
|
+
const csv = table.map(line => line.map(el => {
|
|
68
|
+
if (Array.isArray(el)) {
|
|
69
|
+
return `"${el.join(', ')}"`;
|
|
70
|
+
}
|
|
71
|
+
return el === undefined ? `""` : `"${el}"`;
|
|
72
|
+
}).join(',')).join('\n');
|
|
63
73
|
const utf8Prefix = new Uint8Array([0xef, 0xbb, 0xbf]);
|
|
64
74
|
const blob = new Blob([utf8Prefix, csv], {
|
|
65
75
|
type: 'text/csv'
|
package/dist/esm/exportTable.js
CHANGED
|
@@ -28,7 +28,13 @@ function getXlsxFormatTable({ data, columnDefinitions, }) {
|
|
|
28
28
|
result.push('');
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
const value = lineRecord[key];
|
|
32
|
+
if (Array.isArray(value)) {
|
|
33
|
+
result.push(value.join(', '));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
result.push(value !== null && value !== void 0 ? value : '');
|
|
37
|
+
}
|
|
32
38
|
});
|
|
33
39
|
return result;
|
|
34
40
|
});
|
|
@@ -38,7 +44,16 @@ export function exportToCSV({ columnDefinitions, fileName = 'Table', data, }) {
|
|
|
38
44
|
const xlsxData = getXlsxFormatTable({ data, columnDefinitions });
|
|
39
45
|
const headers = getFilteredColumnsHeaders(columnDefinitions);
|
|
40
46
|
const table = [headers, ...xlsxData];
|
|
41
|
-
const csv = table
|
|
47
|
+
const csv = table
|
|
48
|
+
.map(line => line
|
|
49
|
+
.map(el => {
|
|
50
|
+
if (Array.isArray(el)) {
|
|
51
|
+
return `"${el.join(', ')}"`;
|
|
52
|
+
}
|
|
53
|
+
return el === undefined ? `""` : `"${el}"`;
|
|
54
|
+
})
|
|
55
|
+
.join(','))
|
|
56
|
+
.join('\n');
|
|
42
57
|
const utf8Prefix = new Uint8Array([0xef, 0xbb, 0xbf]);
|
|
43
58
|
const blob = new Blob([utf8Prefix, csv], { type: 'text/csv' });
|
|
44
59
|
const url = URL.createObjectURL(blob);
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Table",
|
|
7
|
-
"version": "0.37.
|
|
7
|
+
"version": "0.37.17",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"@snack-uikit/locale": "*"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "907c996e09527eb09065a7ba17b61dda8c9880ba"
|
|
69
69
|
}
|
package/src/exportTable.ts
CHANGED
|
@@ -52,7 +52,13 @@ function getXlsxFormatTable<TData extends object>({
|
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
const value = lineRecord[key];
|
|
56
|
+
|
|
57
|
+
if (Array.isArray(value)) {
|
|
58
|
+
result.push(value.join(', '));
|
|
59
|
+
} else {
|
|
60
|
+
result.push(value ?? '');
|
|
61
|
+
}
|
|
56
62
|
});
|
|
57
63
|
return result;
|
|
58
64
|
});
|
|
@@ -67,7 +73,19 @@ export function exportToCSV<TData extends object>({
|
|
|
67
73
|
const xlsxData = getXlsxFormatTable({ data, columnDefinitions });
|
|
68
74
|
const headers = getFilteredColumnsHeaders(columnDefinitions);
|
|
69
75
|
const table = [headers, ...xlsxData];
|
|
70
|
-
|
|
76
|
+
|
|
77
|
+
const csv = table
|
|
78
|
+
.map(line =>
|
|
79
|
+
line
|
|
80
|
+
.map(el => {
|
|
81
|
+
if (Array.isArray(el)) {
|
|
82
|
+
return `"${el.join(', ')}"`;
|
|
83
|
+
}
|
|
84
|
+
return el === undefined ? `""` : `"${el}"`;
|
|
85
|
+
})
|
|
86
|
+
.join(','),
|
|
87
|
+
)
|
|
88
|
+
.join('\n');
|
|
71
89
|
|
|
72
90
|
const utf8Prefix = new Uint8Array([0xef, 0xbb, 0xbf]);
|
|
73
91
|
const blob = new Blob([utf8Prefix, csv], { type: 'text/csv' });
|