@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.
@@ -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.274",
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"