@ssplib/react-components 0.0.274 → 0.0.276
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/components/form/table/FilterSection.d.ts +8 -0
- package/components/form/table/FilterSection.js +217 -0
- package/components/form/table/GenericTable.d.ts +2 -2
- package/components/form/table/Table.d.ts +3 -207
- package/components/form/table/Table.js +98 -672
- package/components/form/table/TableErrorState.d.ts +9 -0
- package/components/form/table/TableErrorState.js +27 -0
- package/components/form/table/TableLoadingState.d.ts +6 -0
- package/components/form/table/TableLoadingState.js +39 -0
- package/components/form/table/types.d.ts +50 -128
- package/components/form/table/utils.d.ts +51 -0
- package/components/form/table/utils.js +383 -0
- package/package.json +3 -1
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.downloadCSVAll = exports.downloadCSVFile = exports.ordenarDados = exports.filtrarDados = exports.formatarString = exports.removePunctuationAndAccents = exports.transformArrayObjectInString = exports.getCount = void 0;
|
|
16
|
+
const lodash_get_1 = __importDefault(require("lodash.get"));
|
|
17
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
18
|
+
const jszip_1 = __importDefault(require("jszip"));
|
|
19
|
+
const lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
|
|
20
|
+
const getCount = (countData, itemsCount) => {
|
|
21
|
+
if (countData.length <= 0)
|
|
22
|
+
return 1;
|
|
23
|
+
let count = countData.length / itemsCount;
|
|
24
|
+
count = count < 1 ? 1 : count;
|
|
25
|
+
return Math.ceil(count);
|
|
26
|
+
};
|
|
27
|
+
exports.getCount = getCount;
|
|
28
|
+
function transformArrayObjectInString(o) {
|
|
29
|
+
let arrString = [];
|
|
30
|
+
if (typeof o === 'object' && !Array.isArray(o) && o !== null) {
|
|
31
|
+
for (let [key, value] of Object.entries(o)) {
|
|
32
|
+
if (typeof value === 'object' && !Array.isArray(value) && value !== null) {
|
|
33
|
+
arrString.push(key + ': ' + transformArrayObjectInString(value));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
if (value) {
|
|
37
|
+
// Is true
|
|
38
|
+
arrString.push(key);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return '[' + arrString.join(' - ') + ']';
|
|
44
|
+
}
|
|
45
|
+
exports.transformArrayObjectInString = transformArrayObjectInString;
|
|
46
|
+
// export function defineCSVCells({ csvUpper, csvExcludeUpper }: DefineCSVCellsProps): string {
|
|
47
|
+
// if (typeof cell === 'string') {
|
|
48
|
+
// let item = csvUpper && !csvExcludeUpper.includes(key) ? (cell as string).toUpperCase() : cell
|
|
49
|
+
// item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item
|
|
50
|
+
// return removeQuotes ? `${item}` : `"${item}"`
|
|
51
|
+
// } else if (typeof cell === 'object' && !Array.isArray(cell) && cell !== null) {
|
|
52
|
+
// let strItemAsObject = transformArrayObjectInString(cell).slice(1, -1) // key: label (Ex.: jsNaturezaEvento)
|
|
53
|
+
// let item = csvUpper && !csvExcludeUpper.includes(key) ? (strItemAsObject as string).toUpperCase() : strItemAsObject
|
|
54
|
+
// item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item
|
|
55
|
+
// return removeQuotes ? `${item}` : `"${item}"`
|
|
56
|
+
// }
|
|
57
|
+
// return cell
|
|
58
|
+
// }
|
|
59
|
+
function removePunctuationAndAccents(text) {
|
|
60
|
+
// Remove accents and diacritics
|
|
61
|
+
const normalizedText = text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
62
|
+
// Remove punctuation marks
|
|
63
|
+
const cleanedText = normalizedText.replace(/[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/g, '');
|
|
64
|
+
return cleanedText;
|
|
65
|
+
}
|
|
66
|
+
exports.removePunctuationAndAccents = removePunctuationAndAccents;
|
|
67
|
+
function formatarString(str) {
|
|
68
|
+
const value = typeof str !== 'string' ? str.toString() : str;
|
|
69
|
+
return value
|
|
70
|
+
.normalize('NFD')
|
|
71
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
72
|
+
.toLowerCase()
|
|
73
|
+
.trim();
|
|
74
|
+
}
|
|
75
|
+
exports.formatarString = formatarString;
|
|
76
|
+
function filtrarDados({ filterData, startData, filtersFuncData = {}, localTableName = '', setCurrentPage, setList, setListClone, setListPage, setPagCount, itemsCount }) {
|
|
77
|
+
if (!startData)
|
|
78
|
+
return;
|
|
79
|
+
let currentData = JSON.parse(JSON.stringify(startData));
|
|
80
|
+
filterData
|
|
81
|
+
.filter((dt) => dt.value || (dt.operator === 'entre' && (dt.value || dt.value2)))
|
|
82
|
+
.forEach((dt) => {
|
|
83
|
+
let filteredData = [];
|
|
84
|
+
switch (dt.type) {
|
|
85
|
+
case 'number':
|
|
86
|
+
switch (dt.operator) {
|
|
87
|
+
case 'igual':
|
|
88
|
+
currentData.forEach((cd) => {
|
|
89
|
+
const value = Number((0, lodash_get_1.default)(cd, dt.keyName, ''));
|
|
90
|
+
if (value === Number(dt.value)) {
|
|
91
|
+
filteredData.push(cd);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
break;
|
|
95
|
+
case 'maior que':
|
|
96
|
+
currentData.forEach((cd) => {
|
|
97
|
+
const value = Number((0, lodash_get_1.default)(cd, dt.keyName, ''));
|
|
98
|
+
if (value > Number(dt.value)) {
|
|
99
|
+
filteredData.push(cd);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
break;
|
|
103
|
+
case 'menor que':
|
|
104
|
+
currentData.forEach((cd) => {
|
|
105
|
+
const value = Number((0, lodash_get_1.default)(cd, dt.keyName, ''));
|
|
106
|
+
if (value < Number(dt.value)) {
|
|
107
|
+
filteredData.push(cd);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
113
|
+
case 'string':
|
|
114
|
+
switch (dt.operator) {
|
|
115
|
+
case 'igual':
|
|
116
|
+
currentData.forEach((cd) => {
|
|
117
|
+
const value = (0, lodash_get_1.default)(cd, dt.keyName, '');
|
|
118
|
+
if (dt.useList) {
|
|
119
|
+
if (formatarString(value) === formatarString(dt.value.id)) {
|
|
120
|
+
filteredData.push(cd);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
if (formatarString(value) === formatarString(dt.value)) {
|
|
125
|
+
filteredData.push(cd);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
break;
|
|
130
|
+
case 'contem':
|
|
131
|
+
currentData.forEach((cd) => {
|
|
132
|
+
const value = (0, lodash_get_1.default)(cd, dt.keyName, '');
|
|
133
|
+
if (!value)
|
|
134
|
+
return;
|
|
135
|
+
if (dt.useList) {
|
|
136
|
+
if (formatarString(value).includes(formatarString(dt.value.id))) {
|
|
137
|
+
filteredData.push(cd);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
if (formatarString(value).includes(formatarString(dt.value))) {
|
|
142
|
+
filteredData.push(cd);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
break;
|
|
147
|
+
case 'tem um dos':
|
|
148
|
+
currentData.forEach((cd) => {
|
|
149
|
+
const value = (0, lodash_get_1.default)(cd, dt.keyName, '');
|
|
150
|
+
if (!value)
|
|
151
|
+
return;
|
|
152
|
+
if (dt.value.map((x) => formatarString(x.id)).includes(formatarString(value))) {
|
|
153
|
+
filteredData.push(cd);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
case 'date':
|
|
160
|
+
switch (dt.operator) {
|
|
161
|
+
case 'data exata':
|
|
162
|
+
currentData.forEach((cd) => {
|
|
163
|
+
const value = (0, dayjs_1.default)((0, lodash_get_1.default)(cd, dt.keyName, ''), 'DD/MM/YYYY');
|
|
164
|
+
if (!value.isValid())
|
|
165
|
+
return;
|
|
166
|
+
if (value.isSame((0, dayjs_1.default)(dt.value, 'DD/MM/YYYY'))) {
|
|
167
|
+
filteredData.push(cd);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
break;
|
|
171
|
+
case 'entre':
|
|
172
|
+
const dateA = dt.value ? (0, dayjs_1.default)(dt.value, 'DD/MM/YYYY') : (0, dayjs_1.default)('01/01/2000', 'DD/MM/YYYY');
|
|
173
|
+
const dateB = dt.value2 ? (0, dayjs_1.default)(dt.value2, 'DD/MM/YYYY') : (0, dayjs_1.default)('31/12/2030', 'DD/MM/YYYY');
|
|
174
|
+
currentData.forEach((cd) => {
|
|
175
|
+
const value = (0, dayjs_1.default)((0, lodash_get_1.default)(cd, dt.keyName, ''), 'DD/MM/YYYY');
|
|
176
|
+
if ((value.isAfter(dateA) || value.isSame(dateA)) && (value.isBefore(dateB) || value.isSame(dateB))) {
|
|
177
|
+
filteredData.push(cd);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
case 'dates':
|
|
184
|
+
switch (dt.operator) {
|
|
185
|
+
case 'data inicio':
|
|
186
|
+
currentData.forEach((cd) => {
|
|
187
|
+
var _a;
|
|
188
|
+
const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
|
|
189
|
+
if (dates.length <= 0)
|
|
190
|
+
return;
|
|
191
|
+
var inicioDate = dates[0];
|
|
192
|
+
var inicioValue = (0, dayjs_1.default)(inicioDate, 'DD/MM/YYYY');
|
|
193
|
+
if (inicioValue.isSame((0, dayjs_1.default)(dt.value, 'DD/MM/YYYY'))) {
|
|
194
|
+
filteredData.push(cd);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
break;
|
|
198
|
+
case 'data fim':
|
|
199
|
+
currentData.forEach((cd) => {
|
|
200
|
+
var _a;
|
|
201
|
+
const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
|
|
202
|
+
if (dates.length <= 0)
|
|
203
|
+
return;
|
|
204
|
+
var fimDate = dates[dates.length - 1];
|
|
205
|
+
var fimValue = (0, dayjs_1.default)(fimDate, 'DD/MM/YYYY');
|
|
206
|
+
if (fimValue.isSame((0, dayjs_1.default)(dt.value, 'DD/MM/YYYY'))) {
|
|
207
|
+
filteredData.push(cd);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
break;
|
|
211
|
+
case 'tem a data':
|
|
212
|
+
currentData.forEach((cd) => {
|
|
213
|
+
var _a;
|
|
214
|
+
const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
|
|
215
|
+
if (dates.includes(dt.value)) {
|
|
216
|
+
filteredData.push(cd);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
break;
|
|
220
|
+
case 'entre':
|
|
221
|
+
const dateA = dt.value ? (0, dayjs_1.default)(dt.value, 'DD/MM/YYYY') : (0, dayjs_1.default)('01/01/2000', 'DD/MM/YYYY');
|
|
222
|
+
const dateB = dt.value2 ? (0, dayjs_1.default)(dt.value2, 'DD/MM/YYYY') : (0, dayjs_1.default)('31/12/2030', 'DD/MM/YYYY');
|
|
223
|
+
currentData.forEach((cd) => {
|
|
224
|
+
var _a;
|
|
225
|
+
const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
|
|
226
|
+
let isBetween = false;
|
|
227
|
+
dates.forEach((dtStr) => {
|
|
228
|
+
if (isBetween)
|
|
229
|
+
return;
|
|
230
|
+
const dt = (0, dayjs_1.default)(dtStr, 'DD/MM/YYYY');
|
|
231
|
+
if (!dt.isValid())
|
|
232
|
+
return;
|
|
233
|
+
if ((dt.isAfter(dateA) || dt.isSame(dateA)) && (dt.isBefore(dateB) || dt.isSame(dateB))) {
|
|
234
|
+
isBetween = true;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
if (isBetween) {
|
|
238
|
+
filteredData.push(cd);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
currentData = filteredData;
|
|
246
|
+
});
|
|
247
|
+
setList(currentData);
|
|
248
|
+
setPagCount((0, exports.getCount)(currentData, itemsCount));
|
|
249
|
+
setCurrentPage(0);
|
|
250
|
+
setListPage(1);
|
|
251
|
+
localStorage.setItem(localTableName, JSON.stringify(filterData));
|
|
252
|
+
setListClone(currentData);
|
|
253
|
+
}
|
|
254
|
+
exports.filtrarDados = filtrarDados;
|
|
255
|
+
function ordenarDados({ order, list, orderAsc = false }) {
|
|
256
|
+
const sortedList = (0, lodash_clonedeep_1.default)(list).sort((a, b) => {
|
|
257
|
+
const aValue = order.type === 'string' ? (0, lodash_get_1.default)(a, order.key, '') : Number((0, lodash_get_1.default)(a, order.key, 0));
|
|
258
|
+
const bValue = order.type === 'string' ? (0, lodash_get_1.default)(b, order.key, '') : Number((0, lodash_get_1.default)(b, order.key, 0));
|
|
259
|
+
if (orderAsc) {
|
|
260
|
+
if (aValue < bValue)
|
|
261
|
+
return -1;
|
|
262
|
+
if (aValue > bValue)
|
|
263
|
+
return 1;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
if (aValue > bValue)
|
|
267
|
+
return -1;
|
|
268
|
+
if (aValue < bValue)
|
|
269
|
+
return 1;
|
|
270
|
+
}
|
|
271
|
+
return 0;
|
|
272
|
+
});
|
|
273
|
+
return sortedList;
|
|
274
|
+
}
|
|
275
|
+
exports.ordenarDados = ordenarDados;
|
|
276
|
+
function downloadCSVFile(e, zip = false, options) {
|
|
277
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
278
|
+
e.preventDefault();
|
|
279
|
+
const { list, csvUpper = false, csvExcludeUpper = [], csvExcludeKeys = [], csvExcludeKeysCSV = [], csvCustomKeyNames = {}, csvExcludeValidate = () => false, csv, multipleDataPath = '', normalize = false, removeQuotes = false, hideTitleCSV = false, generateCsvZip = false, csvZipFileNamesKey = '', } = options;
|
|
280
|
+
if (list.length <= 0)
|
|
281
|
+
return;
|
|
282
|
+
const originalKeys = Object.keys(list[0]);
|
|
283
|
+
if (generateCsvZip && zip) {
|
|
284
|
+
const keys = originalKeys.filter((k) => !csvExcludeKeys.includes(k));
|
|
285
|
+
const header = keys.map((k) => csvCustomKeyNames[k] || k).join(',') + '\n';
|
|
286
|
+
const zip = new jszip_1.default();
|
|
287
|
+
const obj = {};
|
|
288
|
+
list.forEach((item) => {
|
|
289
|
+
const key = item[csvZipFileNamesKey];
|
|
290
|
+
if (!obj[key])
|
|
291
|
+
obj[key] = [];
|
|
292
|
+
obj[key].push(item);
|
|
293
|
+
});
|
|
294
|
+
for (const [fileName, items] of Object.entries(obj)) {
|
|
295
|
+
const values = [];
|
|
296
|
+
for (const x of items) {
|
|
297
|
+
if (originalKeys.some((k) => csvExcludeValidate(k, x[k])))
|
|
298
|
+
continue;
|
|
299
|
+
const value = keys.map((k) => formatCell(x[k], k)).join(',');
|
|
300
|
+
values.push(value);
|
|
301
|
+
}
|
|
302
|
+
const csvData = hideTitleCSV ? values.join('\n') : '\uFEFF' + header + values.join('\n');
|
|
303
|
+
if (values.length > 0) {
|
|
304
|
+
zip.file(`${normalizeString(fileName)}.csv`, csvData);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
const link = document.createElement('a');
|
|
308
|
+
const base = yield zip.generateAsync({ type: 'base64' });
|
|
309
|
+
link.href = 'data:application/zip;base64,' + base;
|
|
310
|
+
link.download = `${csv === null || csv === void 0 ? void 0 : csv.fileName}.zip`;
|
|
311
|
+
link.click();
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
let keys = originalKeys.filter((k) => !csvExcludeKeysCSV.includes(k));
|
|
315
|
+
if (multipleDataPath)
|
|
316
|
+
keys = ['dtInicio', 'hrInicio', ...keys.map((k) => (k === multipleDataPath ? 'hrTermino' : k))];
|
|
317
|
+
const header = keys.map((k) => csvCustomKeyNames[k] || k).join(',') + '\n';
|
|
318
|
+
const values = [];
|
|
319
|
+
for (const x of list) {
|
|
320
|
+
if (originalKeys.some((k) => csvExcludeValidate(k, x[k])))
|
|
321
|
+
continue;
|
|
322
|
+
const value = keys.map((k) => formatCell(x[k], k)).join(',');
|
|
323
|
+
if (multipleDataPath && x[multipleDataPath]) {
|
|
324
|
+
for (const d of x[multipleDataPath]) {
|
|
325
|
+
values.push(value.replace('{dtInicio}', d.dtInicio).replace('{hrInicio}', d.hrInicio).replace('{hrTermino}', d.hrTermino));
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
values.push(value);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
const csvData = header + values.join('\n');
|
|
333
|
+
const link = document.createElement('a');
|
|
334
|
+
link.href = 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvData);
|
|
335
|
+
link.download = `${csv === null || csv === void 0 ? void 0 : csv.fileName}.csv`;
|
|
336
|
+
link.click();
|
|
337
|
+
}
|
|
338
|
+
function formatCell(cell, key) {
|
|
339
|
+
let item = typeof cell === 'object' && cell !== null && !Array.isArray(cell) ? transformArrayObjectInString(cell).slice(1, -1) : cell;
|
|
340
|
+
if (csvUpper && typeof item === 'string' && !csvExcludeUpper.includes(key)) {
|
|
341
|
+
item = item.toUpperCase();
|
|
342
|
+
}
|
|
343
|
+
if (normalize && typeof item === 'string') {
|
|
344
|
+
item = normalizeString(item);
|
|
345
|
+
}
|
|
346
|
+
if (typeof item === 'string') {
|
|
347
|
+
return removeQuotes ? `${item}` : `"${item}"`;
|
|
348
|
+
}
|
|
349
|
+
return item;
|
|
350
|
+
}
|
|
351
|
+
function normalizeString(str) {
|
|
352
|
+
return str.normalize('NFD').replace(/[̀-ͯ]/g, '');
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
exports.downloadCSVFile = downloadCSVFile;
|
|
357
|
+
function downloadCSVAll(e, list, keys, fileName) {
|
|
358
|
+
e.preventDefault();
|
|
359
|
+
if (list.length <= 0)
|
|
360
|
+
return;
|
|
361
|
+
const header = keys.join(',') + '\n';
|
|
362
|
+
const values = list
|
|
363
|
+
.map((x) => keys
|
|
364
|
+
.map((k) => {
|
|
365
|
+
if (k === 'tbRa')
|
|
366
|
+
return x[k]['NO_CIDADE'];
|
|
367
|
+
if (k === 'rlEventoData')
|
|
368
|
+
return `${x[k][0]['DT_INICIO']} - ${x[k][0]['HR_INICIO']}`;
|
|
369
|
+
if (typeof x[k] === 'string')
|
|
370
|
+
return `"${x[k]}"`;
|
|
371
|
+
if (typeof x[k] === 'object' && x[k] !== null)
|
|
372
|
+
return `"${transformArrayObjectInString(x[k]).slice(1, -1)}"`;
|
|
373
|
+
return x[k];
|
|
374
|
+
})
|
|
375
|
+
.join(','))
|
|
376
|
+
.join('\n');
|
|
377
|
+
const csvData = header + values;
|
|
378
|
+
const link = document.createElement('a');
|
|
379
|
+
link.href = 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvData);
|
|
380
|
+
link.download = `${fileName}.csv`;
|
|
381
|
+
link.click();
|
|
382
|
+
}
|
|
383
|
+
exports.downloadCSVAll = downloadCSVAll;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ssplib/react-components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.276",
|
|
4
4
|
"description": "SSP React Components",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": "Pedro Henrique <sr.hudrick@gmail.com>",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"react-imask": "^6.6.0",
|
|
15
15
|
"react-query": "^3.39.3",
|
|
16
16
|
"dayjs": "^1.11.7",
|
|
17
|
+
"lodash.clonedeep": "^4.5.0",
|
|
17
18
|
"lodash.hasin": "^4.5.2",
|
|
18
19
|
"react-google-recaptcha": "^2.1.0",
|
|
19
20
|
"jszip": "^3.10.1",
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"react-leaflet": "^4.2.1"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
30
|
+
"@types/lodash.clonedeep": "^4.5.9",
|
|
29
31
|
"@types/lodash.get": "^4.4.7",
|
|
30
32
|
"@types/lodash.hasin": "^4.5.7",
|
|
31
33
|
"prop-types": "15.8.1"
|