@ssplib/react-components 0.0.296 → 0.0.298

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.
Files changed (111) hide show
  1. package/package.json +12 -2
  2. package/components/detalhes/Category.d.ts +0 -4
  3. package/components/detalhes/Category.js +0 -14
  4. package/components/detalhes/Field.d.ts +0 -9
  5. package/components/detalhes/Field.js +0 -42
  6. package/components/detalhes/FieldLabel.d.ts +0 -9
  7. package/components/detalhes/FieldLabel.js +0 -28
  8. package/components/detalhes/File.d.ts +0 -8
  9. package/components/detalhes/File.js +0 -62
  10. package/components/form/checkbox/CheckBox.d.ts +0 -10
  11. package/components/form/checkbox/CheckBox.js +0 -18
  12. package/components/form/checkbox/CheckBoxAdditional.d.ts +0 -8
  13. package/components/form/checkbox/CheckBoxAdditional.js +0 -95
  14. package/components/form/checkbox/CheckBoxWarning.d.ts +0 -10
  15. package/components/form/checkbox/CheckBoxWarning.js +0 -43
  16. package/components/form/checkbox/RequiredCheckBoxValidator.d.ts +0 -6
  17. package/components/form/checkbox/RequiredCheckBoxValidator.js +0 -85
  18. package/components/form/date/DatePicker.d.ts +0 -14
  19. package/components/form/date/DatePicker.js +0 -105
  20. package/components/form/date/GenericDatePicker.d.ts +0 -14
  21. package/components/form/date/GenericDatePicker.js +0 -105
  22. package/components/form/date/TimePicker.d.ts +0 -11
  23. package/components/form/date/TimePicker.js +0 -82
  24. package/components/form/file/DropFileUpload.d.ts +0 -17
  25. package/components/form/file/DropFileUpload.js +0 -226
  26. package/components/form/file/FileUpload.d.ts +0 -14
  27. package/components/form/file/FileUpload.js +0 -200
  28. package/components/form/input/ActiveInput.d.ts +0 -12
  29. package/components/form/input/ActiveInput.js +0 -33
  30. package/components/form/input/AutoComplete.d.ts +0 -12
  31. package/components/form/input/AutoComplete.js +0 -69
  32. package/components/form/input/FetchAutoComplete.d.ts +0 -20
  33. package/components/form/input/FetchAutoComplete.js +0 -134
  34. package/components/form/input/FixedAutoComplete.d.ts +0 -19
  35. package/components/form/input/FixedAutoComplete.js +0 -83
  36. package/components/form/input/GenericFetchAutoComplete.d.ts +0 -20
  37. package/components/form/input/GenericFetchAutoComplete.js +0 -132
  38. package/components/form/input/GenericInput.d.ts +0 -19
  39. package/components/form/input/GenericInput.js +0 -168
  40. package/components/form/input/GenericMaskInput.d.ts +0 -14
  41. package/components/form/input/GenericMaskInput.js +0 -79
  42. package/components/form/input/GenericMultInput.d.ts +0 -14
  43. package/components/form/input/GenericMultInput.js +0 -67
  44. package/components/form/input/Input.d.ts +0 -19
  45. package/components/form/input/Input.js +0 -168
  46. package/components/form/input/MaskInput.d.ts +0 -14
  47. package/components/form/input/MaskInput.js +0 -78
  48. package/components/form/input/MultInput.d.ts +0 -14
  49. package/components/form/input/MultInput.js +0 -67
  50. package/components/form/input/OtherCheckBox.d.ts +0 -8
  51. package/components/form/input/OtherCheckBox.js +0 -56
  52. package/components/form/stepper/Stepper.d.ts +0 -16
  53. package/components/form/stepper/Stepper.js +0 -135
  54. package/components/form/stepper/StepperBlock.d.ts +0 -14
  55. package/components/form/stepper/StepperBlock.js +0 -97
  56. package/components/form/switch/Switch.d.ts +0 -11
  57. package/components/form/switch/Switch.js +0 -54
  58. package/components/form/switch/ToggleVisibility.d.ts +0 -14
  59. package/components/form/switch/ToggleVisibility.js +0 -61
  60. package/components/form/table/FilterSection.d.ts +0 -8
  61. package/components/form/table/FilterSection.js +0 -217
  62. package/components/form/table/GenericTable.d.ts +0 -8
  63. package/components/form/table/GenericTable.js +0 -1034
  64. package/components/form/table/Table.d.ts +0 -5
  65. package/components/form/table/Table.js +0 -514
  66. package/components/form/table/TableErrorState.d.ts +0 -9
  67. package/components/form/table/TableErrorState.js +0 -27
  68. package/components/form/table/TableLoadingState.d.ts +0 -6
  69. package/components/form/table/TableLoadingState.js +0 -39
  70. package/components/form/table/types.d.ts +0 -212
  71. package/components/form/table/types.js +0 -2
  72. package/components/form/table/utils.d.ts +0 -30
  73. package/components/form/table/utils.js +0 -361
  74. package/components/icons/icons.d.ts +0 -4
  75. package/components/icons/icons.js +0 -24
  76. package/components/map/AnimatedMarker.d.ts +0 -5
  77. package/components/map/AnimatedMarker.js +0 -65
  78. package/components/map/DraggableMarker.d.ts +0 -12
  79. package/components/map/DraggableMarker.js +0 -66
  80. package/components/map/Map.d.ts +0 -17
  81. package/components/map/Map.js +0 -23
  82. package/components/map/index.d.ts +0 -2
  83. package/components/map/index.js +0 -31
  84. package/components/modal/Modal.d.ts +0 -8
  85. package/components/modal/Modal.js +0 -105
  86. package/components/navbar/NavBar.d.ts +0 -16
  87. package/components/navbar/NavBar.js +0 -171
  88. package/components/navbar/TabNavBar.d.ts +0 -18
  89. package/components/navbar/TabNavBar.js +0 -179
  90. package/components/providers/FormProvider.d.ts +0 -11
  91. package/components/providers/FormProvider.js +0 -54
  92. package/components/providers/KeycloakAuthProvider.d.ts +0 -11
  93. package/components/providers/KeycloakAuthProvider.js +0 -118
  94. package/components/providers/OAuthProvider.d.ts +0 -19
  95. package/components/providers/OAuthProvider.js +0 -138
  96. package/components/providers/SspComponentsProvider.d.ts +0 -4
  97. package/components/providers/SspComponentsProvider.js +0 -18
  98. package/components/utils/Bt.d.ts +0 -9
  99. package/components/utils/Bt.js +0 -35
  100. package/components/utils/CustomMenu.d.ts +0 -12
  101. package/components/utils/CustomMenu.js +0 -39
  102. package/context/auth.d.ts +0 -3
  103. package/context/auth.js +0 -5
  104. package/context/form.d.ts +0 -20
  105. package/context/form.js +0 -5
  106. package/index.d.ts +0 -44
  107. package/index.js +0 -94
  108. package/types/auth.d.ts +0 -72
  109. package/types/auth.js +0 -2
  110. package/types/form.d.ts +0 -64
  111. package/types/form.js +0 -31
@@ -1,1034 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.GenericTable = void 0;
30
- const icons_material_1 = require("@mui/icons-material");
31
- const Clear_1 = __importDefault(require("@mui/icons-material/Clear"));
32
- const FileDownload_1 = __importDefault(require("@mui/icons-material/FileDownload"));
33
- const NavigateNextRounded_1 = __importDefault(require("@mui/icons-material/NavigateNextRounded"));
34
- const Search_1 = __importDefault(require("@mui/icons-material/Search"));
35
- const material_1 = require("@mui/material");
36
- const Grid_1 = __importDefault(require("@mui/material/Grid"));
37
- const Pagination_1 = __importDefault(require("@mui/material/Pagination"));
38
- const TextField_1 = __importDefault(require("@mui/material/TextField"));
39
- const Typography_1 = __importDefault(require("@mui/material/Typography"));
40
- const x_date_pickers_1 = require("@mui/x-date-pickers");
41
- const AdapterDayjs_1 = require("@mui/x-date-pickers/AdapterDayjs");
42
- const dayjs_1 = __importDefault(require("dayjs"));
43
- const jszip_1 = __importDefault(require("jszip"));
44
- const lodash_get_1 = __importDefault(require("lodash.get"));
45
- const react_1 = __importStar(require("react"));
46
- const auth_1 = require("../../../context/auth");
47
- const Modal_1 = require("../../modal/Modal");
48
- const CustomMenu_1 = __importDefault(require("../../utils/CustomMenu"));
49
- function removePunctuationAndAccents(text) {
50
- // Remove accents and diacritics
51
- const normalizedText = text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
52
- // Remove punctuation marks
53
- const cleanedText = normalizedText.replace(/[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/g, '');
54
- return cleanedText;
55
- }
56
- function formatarString(str) {
57
- const value = typeof str !== 'string' ? str.toString() : str;
58
- return value
59
- .normalize('NFD')
60
- .replace(/[\u0300-\u036f]/g, '')
61
- .toLowerCase()
62
- .trim();
63
- }
64
- let startData = [];
65
- let isExpandAll = false;
66
- let localTableName = '';
67
- let orderAsc = false;
68
- let filtersFuncData = {};
69
- let localTableNameCache = '';
70
- /**
71
- * Tabela cujo dados devem ser passados via props
72
- */
73
- function GenericTable({ mediaQueryLG, columns, emptyMsg = {
74
- user: 'Nenhum dado encontrado',
75
- public: 'Nenhum dado encontrado',
76
- }, dataPath = '', tableName = 'Dados', csv, columnSize, action, useKC = true, statusKeyName = '', csvExcludeKeys = [], csvExcludeKeysCSV = [], csvExcludeKeysAll = [], csvCustomKeyNames = {}, csvExcludeValidate = (key, value) => false, csvButtonTitle = 'Salvar .CSV', csvNoZipText = 'Salvar .CSV', csvAllButtonTitle = 'Salvar todos em CSV', removeQuotes = false, normalize = false, csvShowAllButton = false, csvWithoutZip = false, itemCount = 10, csvUpper = false, csvZipFileNamesKey = '', generateCsvZip = false, hideTitleCSV = false, csvExcludeUpper = [], multipleDataPath = '', expandTextMaxLength = 50, collapsedSize = 53, customMargin = 4, customMarginMobile = 0, filtersFunc, filters = [], orderBy = [], customErrorMsg = undefined, customTableStyle = {}, id, initialData = null, isLoading, }) {
77
- var _a;
78
- const [error, setError] = (0, react_1.useState)(null);
79
- const [data, setData] = (0, react_1.useState)(initialData);
80
- const { user, userLoaded } = (0, react_1.useContext)(auth_1.AuthContext);
81
- const [list, setList] = (0, react_1.useState)([]);
82
- const [listClone, setListClone] = (0, react_1.useState)([]);
83
- //numero de items pra ser mostrado
84
- const [itemsCount, setItemsCount] = (0, react_1.useState)(itemCount);
85
- const [currentPage, setCurrentPage] = (0, react_1.useState)(0);
86
- const [paginationCount, setPagCount] = (0, react_1.useState)(1);
87
- const [listPage, setListPage] = (0, react_1.useState)(1);
88
- const [oldSelectState, setOldSelectState] = (0, react_1.useState)('');
89
- const [expandObj, setExpandObj] = (0, react_1.useState)({});
90
- const [showExpandObj, setShowExpandObj] = (0, react_1.useState)({});
91
- const [showExpandObjOnExited, setShowExpandObjOnExited] = (0, react_1.useState)({});
92
- const [filterKey, setFilterKey] = (0, react_1.useState)('filterKey');
93
- const theme = (0, material_1.useTheme)();
94
- const isSmall = (0, material_1.useMediaQuery)(theme.breakpoints.only('xs'));
95
- const filterContainer = (0, react_1.useRef)(null);
96
- const lg = (0, material_1.useMediaQuery)(theme.breakpoints.up(2000));
97
- localTableName = `tableFilter_${id}`;
98
- localTableNameCache = `tableFilterCache_${id}`;
99
- filtersFuncData = filtersFunc !== null && filtersFunc !== void 0 ? filtersFunc : {};
100
- if (!localStorage.getItem(localTableNameCache))
101
- localStorage.setItem(localTableNameCache, JSON.stringify(filters));
102
- if (localStorage.getItem(localTableNameCache) !== JSON.stringify(filters)) {
103
- localStorage.setItem(localTableNameCache, JSON.stringify(filters));
104
- localStorage.removeItem(localTableName);
105
- }
106
- const getCount = (0, react_1.useCallback)((countData) => {
107
- if (countData.length <= 0)
108
- return 1;
109
- let count = countData.length / itemsCount;
110
- count = count < 1 ? 1 : count;
111
- return Math.ceil(count);
112
- }, [itemsCount]);
113
- const getData = (0, react_1.useCallback)((dt) => {
114
- if (Array.isArray(dt))
115
- return dt;
116
- if (typeof dt === 'object')
117
- return (0, lodash_get_1.default)(dt, dataPath);
118
- }, []);
119
- (0, react_1.useEffect)(() => {
120
- if (error || !getData(data))
121
- return;
122
- const value = getData(data);
123
- setList(value);
124
- setListClone(value);
125
- setPagCount(getCount(value));
126
- if (localStorage.getItem(localTableName)) {
127
- filtrar(JSON.parse(localStorage.getItem(localTableName)));
128
- }
129
- }, [itemsCount, data, getCount, error]);
130
- (0, react_1.useEffect)(() => {
131
- setCurrentPage(listPage - 1);
132
- }, [listPage]);
133
- const onPaginationChange = (0, react_1.useCallback)((e, page) => {
134
- setListPage(page);
135
- }, []);
136
- function onInputChange(e) {
137
- console.log(listClone);
138
- const searchValue = e.target.value;
139
- if (searchValue === '') {
140
- setList(listClone);
141
- setPagCount(getCount(getData(list)));
142
- return;
143
- }
144
- const listData = getData(list);
145
- const newList = [];
146
- listData.forEach((x) => {
147
- const dataStr = [];
148
- Object.keys(x).map((key) => {
149
- var _a;
150
- let value = (_a = (0, lodash_get_1.default)(x, key, '')) !== null && _a !== void 0 ? _a : '';
151
- if (typeof value === 'number')
152
- value = value.toString();
153
- if (typeof value !== 'string')
154
- return;
155
- dataStr.push(value);
156
- });
157
- if (dataStr.length <= 0)
158
- return;
159
- let exists = false;
160
- dataStr.forEach((key) => {
161
- const status = ['P', 'C', 'A', 'R', 'L', 'PA'];
162
- if (status.includes(key)) {
163
- switch (key) {
164
- case 'P':
165
- if ('em analise'.includes(searchValue.toLowerCase())) {
166
- exists = true;
167
- }
168
- return;
169
- case 'C':
170
- if ('cancelado'.includes(searchValue.toLowerCase())) {
171
- exists = true;
172
- }
173
- return;
174
- case 'A':
175
- if ('cadastrado'.includes(searchValue.toLowerCase())) {
176
- exists = true;
177
- }
178
- return;
179
- case 'R':
180
- if ('reprovado'.includes(searchValue.toLowerCase())) {
181
- exists = true;
182
- }
183
- return;
184
- case 'L':
185
- if ('licenciado'.includes(searchValue.toLowerCase())) {
186
- exists = true;
187
- }
188
- return;
189
- case 'PA':
190
- if ('pré aprovado'.includes(searchValue.toLowerCase()) || 'pre aprovado'.includes(searchValue.toLowerCase())) {
191
- exists = true;
192
- }
193
- return;
194
- case 'FP':
195
- if ('fora do prazo'.includes(searchValue.toLowerCase())) {
196
- exists = true;
197
- }
198
- return;
199
- }
200
- }
201
- if (removePunctuationAndAccents(key.toLowerCase()).includes(removePunctuationAndAccents(searchValue.toLowerCase()))) {
202
- exists = true;
203
- }
204
- });
205
- if (!exists)
206
- return;
207
- newList.push(x);
208
- });
209
- setList(newList);
210
- setPagCount(getCount(newList));
211
- setCurrentPage(0);
212
- setListPage(1);
213
- }
214
- const getMaxItems = (0, react_1.useCallback)(() => {
215
- const start = currentPage * itemsCount;
216
- return list.slice(start, start + itemsCount);
217
- }, [list, itemsCount, currentPage]);
218
- function defineCSVCells(key, cell) {
219
- if (typeof cell === 'string') {
220
- let item = csvUpper && !csvExcludeUpper.includes(key) ? cell.toUpperCase() : cell;
221
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
222
- return removeQuotes ? `${item}` : `"${item}"`;
223
- }
224
- else if (typeof cell === 'object' && !Array.isArray(cell) && cell !== null) {
225
- let strItemAsObject = transformArrayObjectInString(cell).slice(1, -1); // key: label (Ex.: jsNaturezaEvento)
226
- let item = csvUpper && !csvExcludeUpper.includes(key) ? strItemAsObject.toUpperCase() : strItemAsObject;
227
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
228
- return removeQuotes ? `${item}` : `"${item}"`;
229
- }
230
- return cell;
231
- }
232
- // download file
233
- const downloadCSV = (0, react_1.useCallback)((e, zip = false) => {
234
- e.preventDefault();
235
- if (list.length <= 0)
236
- return;
237
- const originalKeys = Object.keys(list[0]);
238
- if (generateCsvZip && zip) {
239
- const keys = originalKeys.filter((k) => !csvExcludeKeys.includes(k));
240
- const header = keys.map((k) => (csvCustomKeyNames[k] ? csvCustomKeyNames[k] : k)).join(',') + '\n';
241
- const zip = new jszip_1.default();
242
- const obj = {};
243
- list.forEach((x) => {
244
- if (!obj[x[csvZipFileNamesKey]])
245
- obj[x[csvZipFileNamesKey]] = [];
246
- obj[x[csvZipFileNamesKey]].push(x);
247
- });
248
- Object.keys(obj).forEach((objKey) => {
249
- const values = [];
250
- obj[objKey].forEach((x) => {
251
- let include = true;
252
- originalKeys.forEach((k) => {
253
- //verificar se pode incluir
254
- if (csvExcludeValidate(k, x[k])) {
255
- include = false;
256
- }
257
- });
258
- if (include) {
259
- const value = keys
260
- .map((k) => {
261
- if (typeof x[k] === 'string') {
262
- let item = csvUpper ? x[k].toUpperCase() : x[k];
263
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
264
- return removeQuotes ? `${item}` : `"${item}"`;
265
- }
266
- else if (typeof x[k] === 'object' && !Array.isArray(x[k]) && x[k] !== null) {
267
- let strItemAsObject = transformArrayObjectInString(x[k]).slice(1, -1); // k: label (Ex.: jsNaturezaEvento)
268
- let item = csvUpper && !csvExcludeUpper.includes(k) ? strItemAsObject.toUpperCase() : strItemAsObject;
269
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
270
- return removeQuotes ? `${item}` : `"${item}"`;
271
- }
272
- return x[k];
273
- })
274
- .join(',');
275
- values.push(value);
276
- }
277
- });
278
- const csvData = hideTitleCSV ? values.join('\n') : '\uFEFF' + header + values.join('\n');
279
- if (values.length > 0)
280
- zip.file(`${objKey.normalize('NFD').replace(/[\u0300-\u036f]/g, '')}.csv`, csvData);
281
- });
282
- // // download
283
- var link = window.document.createElement('a');
284
- zip.generateAsync({ type: 'base64' }).then((base) => {
285
- link.setAttribute('href', 'data:application/zip;base64,' + base);
286
- link.setAttribute('download', `${csv === null || csv === void 0 ? void 0 : csv.fileName}.zip`);
287
- link.click();
288
- });
289
- }
290
- else {
291
- let keys = originalKeys
292
- .filter((k) => !csvExcludeKeysCSV.includes(k))
293
- .map((k) => {
294
- if (k === multipleDataPath) {
295
- return 'hrTermino';
296
- }
297
- return k;
298
- });
299
- if (multipleDataPath !== '') {
300
- keys = ['dtInicio', 'hrInicio', ...keys];
301
- }
302
- const header = keys.map((k) => (csvCustomKeyNames[k] ? csvCustomKeyNames[k] : k)).join(',') + '\n';
303
- const values = [];
304
- list.forEach((x) => {
305
- let include = true;
306
- originalKeys.forEach((k) => {
307
- //verificar se pode incluir
308
- if (csvExcludeValidate(k, x[k])) {
309
- include = false;
310
- }
311
- });
312
- if (include) {
313
- const value = keys
314
- .map((k) => {
315
- if (k === 'dtInicio')
316
- return '{dtInicio}';
317
- else if (k === 'hrInicio')
318
- return '{hrInicio}';
319
- else if (k === 'hrTermino')
320
- return '{hrTermino}';
321
- else {
322
- if (typeof x[k] === 'string') {
323
- let item = csvUpper && !csvExcludeUpper.includes(k) ? x[k].toUpperCase() : x[k];
324
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
325
- return removeQuotes ? `${item}` : `"${item}"`;
326
- }
327
- else if (typeof x[k] === 'object' && !Array.isArray(x[k]) && x[k] !== null) {
328
- let strItemAsObject = transformArrayObjectInString(x[k]).slice(1, -1); // k: label (Ex.: jsNaturezaEvento)
329
- let item = csvUpper && !csvExcludeUpper.includes(k) ? strItemAsObject.toUpperCase() : strItemAsObject;
330
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
331
- return removeQuotes ? `${item}` : `"${item}"`;
332
- }
333
- return x[k];
334
- }
335
- })
336
- .join(',');
337
- if (multipleDataPath !== '') {
338
- const dates = x[multipleDataPath];
339
- if (dates) {
340
- ;
341
- dates.forEach((d) => {
342
- values.push(value.replace('{dtInicio}', d.dtInicio).replace('{hrInicio}', d.hrInicio).replace('{hrTermino}', d.hrTermino));
343
- });
344
- }
345
- }
346
- else {
347
- values.push(value);
348
- }
349
- }
350
- });
351
- const csvData = header + values.join('\n');
352
- // download
353
- var link = window.document.createElement('a');
354
- link.setAttribute('href', 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvData));
355
- link.setAttribute('download', `${csv === null || csv === void 0 ? void 0 : csv.fileName}.csv`);
356
- link.click();
357
- }
358
- }, [list]);
359
- function transformArrayObjectInString(o) {
360
- let arrString = [];
361
- if (typeof o === 'object' && !Array.isArray(o) && o !== null) {
362
- for (let [key, value] of Object.entries(o)) {
363
- if (typeof value === 'object' && !Array.isArray(value) && value !== null) {
364
- arrString.push(key + ': ' + transformArrayObjectInString(value));
365
- }
366
- else {
367
- if (value) {
368
- // Is true
369
- arrString.push(key);
370
- }
371
- }
372
- }
373
- }
374
- return '[' + arrString.join(' - ') + ']';
375
- }
376
- const downloadCSVAll = (0, react_1.useCallback)((e) => {
377
- e.preventDefault();
378
- if (list.length <= 0)
379
- return;
380
- const keys = Object.keys(list[0]).filter((k) => !csvExcludeKeysAll.includes(k));
381
- const header = keys.join(',') + '\n';
382
- const values = list
383
- .map((x) => {
384
- return keys
385
- .map((k) => {
386
- if (k === 'tbRa')
387
- return x[k]['NO_CIDADE'];
388
- if (k === 'rlEventoData')
389
- return `${x[k][0]['DT_INICIO']} - ${x[k][0]['HR_INICIO']}`;
390
- if (typeof x[k] === 'string') {
391
- let item = csvUpper && !csvExcludeUpper.includes(k) ? x[k].toUpperCase() : x[k];
392
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
393
- return removeQuotes ? `${item}` : `"${item}"`;
394
- }
395
- else if (typeof x[k] === 'object' && !Array.isArray(x[k]) && x[k] !== null) {
396
- let strItemAsObject = transformArrayObjectInString(x[k]).slice(1, -1); // k: label (Ex.: jsNaturezaEvento)
397
- let item = csvUpper && !csvExcludeUpper.includes(k) ? strItemAsObject.toUpperCase() : strItemAsObject;
398
- item = normalize ? item.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : item;
399
- return removeQuotes ? `${item}` : `"${item}"`;
400
- }
401
- return x[k];
402
- })
403
- .join(',');
404
- })
405
- .join('\n');
406
- const csvData = header + values;
407
- // download
408
- var link = window.document.createElement('a');
409
- link.setAttribute('href', 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvData));
410
- link.setAttribute('download', `${csv === null || csv === void 0 ? void 0 : csv.fileName}.csv`);
411
- link.click();
412
- }, [list]);
413
- function expandAll() {
414
- let obj = {};
415
- for (let i = 0; i < itemCount; i++) {
416
- obj[i] = !isExpandAll;
417
- }
418
- setShowExpandObjOnExited(obj);
419
- setExpandObj(obj);
420
- isExpandAll = !isExpandAll;
421
- }
422
- function reset() {
423
- setList(startData);
424
- setListClone(startData);
425
- setPagCount(getCount(startData));
426
- setCurrentPage(0);
427
- setListPage(1);
428
- localStorage.removeItem(localTableName);
429
- setFilterKey(new Date().getTime().toString());
430
- }
431
- function filtrar(filterData) {
432
- if (!startData)
433
- return;
434
- let currentData = JSON.parse(JSON.stringify(startData));
435
- filterData
436
- .filter((dt) => dt.value || (dt.operator === 'entre' && (dt.value || dt.value2)))
437
- .forEach((dt) => {
438
- let filteredData = [];
439
- switch (dt.type) {
440
- case 'number':
441
- switch (dt.operator) {
442
- case 'igual':
443
- currentData.forEach((cd) => {
444
- const value = Number((0, lodash_get_1.default)(cd, dt.keyName, ''));
445
- if (value === Number(dt.value)) {
446
- filteredData.push(cd);
447
- }
448
- });
449
- break;
450
- case 'maior que':
451
- currentData.forEach((cd) => {
452
- const value = Number((0, lodash_get_1.default)(cd, dt.keyName, ''));
453
- if (value > Number(dt.value)) {
454
- filteredData.push(cd);
455
- }
456
- });
457
- break;
458
- case 'menor que':
459
- currentData.forEach((cd) => {
460
- const value = Number((0, lodash_get_1.default)(cd, dt.keyName, ''));
461
- if (value < Number(dt.value)) {
462
- filteredData.push(cd);
463
- }
464
- });
465
- break;
466
- }
467
- break;
468
- case 'string':
469
- console.log('ata: ', dt.operator);
470
- switch (dt.operator) {
471
- case 'igual':
472
- currentData.forEach((cd) => {
473
- const value = (0, lodash_get_1.default)(cd, dt.keyName, '');
474
- if (dt.useList) {
475
- if (formatarString(value) === formatarString(dt.value.id)) {
476
- filteredData.push(cd);
477
- }
478
- }
479
- else {
480
- if (formatarString(value) === formatarString(dt.value)) {
481
- filteredData.push(cd);
482
- }
483
- }
484
- });
485
- break;
486
- case 'contem':
487
- currentData.forEach((cd) => {
488
- const value = (0, lodash_get_1.default)(cd, dt.keyName, '');
489
- if (!value)
490
- return;
491
- if (dt.useList) {
492
- if (formatarString(value).includes(formatarString(dt.value.id))) {
493
- filteredData.push(cd);
494
- }
495
- }
496
- else {
497
- if (formatarString(value).includes(formatarString(dt.value))) {
498
- filteredData.push(cd);
499
- }
500
- }
501
- });
502
- break;
503
- case 'tem um dos':
504
- currentData.forEach((cd) => {
505
- const value = (0, lodash_get_1.default)(cd, dt.keyName, '');
506
- if (!value)
507
- return;
508
- if (dt.value.map((x) => formatarString(x.id)).includes(formatarString(value))) {
509
- filteredData.push(cd);
510
- }
511
- });
512
- break;
513
- }
514
- break;
515
- case 'date':
516
- switch (dt.operator) {
517
- case 'data exata':
518
- currentData.forEach((cd) => {
519
- const value = (0, dayjs_1.default)((0, lodash_get_1.default)(cd, dt.keyName, ''), 'DD/MM/YYYY');
520
- if (!value.isValid())
521
- return;
522
- if (value.isSame((0, dayjs_1.default)(dt.value, 'DD/MM/YYYY'))) {
523
- filteredData.push(cd);
524
- }
525
- });
526
- break;
527
- case 'entre':
528
- const dateA = dt.value ? (0, dayjs_1.default)(dt.value, 'DD/MM/YYYY') : (0, dayjs_1.default)('01/01/2000', 'DD/MM/YYYY');
529
- const dateB = dt.value2 ? (0, dayjs_1.default)(dt.value2, 'DD/MM/YYYY') : (0, dayjs_1.default)('31/12/2030', 'DD/MM/YYYY');
530
- currentData.forEach((cd) => {
531
- const value = (0, dayjs_1.default)((0, lodash_get_1.default)(cd, dt.keyName, ''), 'DD/MM/YYYY');
532
- if ((value.isAfter(dateA) || value.isSame(dateA)) && (value.isBefore(dateB) || value.isSame(dateB))) {
533
- filteredData.push(cd);
534
- }
535
- });
536
- break;
537
- }
538
- break;
539
- case 'dates':
540
- switch (dt.operator) {
541
- case 'data inicio':
542
- currentData.forEach((cd) => {
543
- var _a;
544
- const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
545
- if (dates.length <= 0)
546
- return;
547
- var inicioDate = dates[0];
548
- var inicioValue = (0, dayjs_1.default)(inicioDate, 'DD/MM/YYYY');
549
- if (inicioValue.isSame((0, dayjs_1.default)(dt.value, 'DD/MM/YYYY'))) {
550
- filteredData.push(cd);
551
- }
552
- });
553
- break;
554
- case 'data fim':
555
- currentData.forEach((cd) => {
556
- var _a;
557
- const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
558
- if (dates.length <= 0)
559
- return;
560
- var fimDate = dates[dates.length - 1];
561
- var fimValue = (0, dayjs_1.default)(fimDate, 'DD/MM/YYYY');
562
- if (fimValue.isSame((0, dayjs_1.default)(dt.value, 'DD/MM/YYYY'))) {
563
- filteredData.push(cd);
564
- }
565
- });
566
- break;
567
- case 'tem a data':
568
- currentData.forEach((cd) => {
569
- var _a;
570
- const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
571
- if (dates.includes(dt.value)) {
572
- filteredData.push(cd);
573
- }
574
- });
575
- break;
576
- case 'entre':
577
- const dateA = dt.value ? (0, dayjs_1.default)(dt.value, 'DD/MM/YYYY') : (0, dayjs_1.default)('01/01/2000', 'DD/MM/YYYY');
578
- const dateB = dt.value2 ? (0, dayjs_1.default)(dt.value2, 'DD/MM/YYYY') : (0, dayjs_1.default)('31/12/2030', 'DD/MM/YYYY');
579
- currentData.forEach((cd) => {
580
- var _a;
581
- const dates = (_a = filtersFuncData[dt.customFunc]((0, lodash_get_1.default)(cd, dt.keyName, ''))) !== null && _a !== void 0 ? _a : [];
582
- let isBetween = false;
583
- dates.forEach((dtStr) => {
584
- if (isBetween)
585
- return;
586
- const dt = (0, dayjs_1.default)(dtStr, 'DD/MM/YYYY');
587
- if (!dt.isValid())
588
- return;
589
- if ((dt.isAfter(dateA) || dt.isSame(dateA)) && (dt.isBefore(dateB) || dt.isSame(dateB))) {
590
- isBetween = true;
591
- }
592
- });
593
- if (isBetween) {
594
- filteredData.push(cd);
595
- }
596
- });
597
- break;
598
- }
599
- break;
600
- }
601
- currentData = filteredData;
602
- });
603
- setList(currentData);
604
- setPagCount(getCount(currentData));
605
- setCurrentPage(0);
606
- setListPage(1);
607
- localStorage.setItem(localTableName, JSON.stringify(filterData));
608
- setListClone(currentData);
609
- }
610
- function ordenar(order) {
611
- let oldList = [...list];
612
- oldList.sort((a, b) => {
613
- const aValue = order.type === 'string' ? (0, lodash_get_1.default)(a, order.key, '') : Number((0, lodash_get_1.default)(a, order.key, 0));
614
- const bValue = order.type === 'string' ? (0, lodash_get_1.default)(b, order.key, '') : Number((0, lodash_get_1.default)(b, order.key, 0));
615
- if (orderAsc) {
616
- if (aValue < bValue)
617
- return -1;
618
- if (aValue > bValue)
619
- return 1;
620
- }
621
- else {
622
- if (aValue > bValue)
623
- return -1;
624
- if (aValue < bValue)
625
- return 1;
626
- }
627
- return 0;
628
- });
629
- orderAsc = !orderAsc;
630
- setList(oldList);
631
- }
632
- // effect usado quando for mostrar "VER MAIS" e "VER MENOS"
633
- (0, react_1.useEffect)(() => {
634
- const start = currentPage * itemsCount;
635
- const newList = list.slice(start, start + itemsCount);
636
- let obj = {};
637
- newList.forEach((x, index) => {
638
- columns.forEach((c) => {
639
- var _a;
640
- obj[index] = obj[index] === true ? true : ((_a = (0, lodash_get_1.default)(x, c === null || c === void 0 ? void 0 : c.keyName, '')) !== null && _a !== void 0 ? _a : 'Não Informado').toString().length >= expandTextMaxLength;
641
- });
642
- });
643
- setShowExpandObj(obj);
644
- }, [list, itemsCount, currentPage]);
645
- (0, react_1.useEffect)(() => {
646
- console.log(filterContainer.current);
647
- }, [filterContainer.current]);
648
- if (error)
649
- return (react_1.default.createElement(material_1.Box, { bgcolor: '#fff2c8', color: '#3e3129', padding: 2, marginX: 2, borderRadius: 4 },
650
- react_1.default.createElement(Typography_1.default, { fontSize: 24, textAlign: 'center', fontFamily: 'Inter' },
651
- error.status === 403 && 'Acesso negado',
652
- error.status === 500 && (react_1.default.createElement(material_1.Box, { fontWeight: 500, textAlign: 'center' },
653
- react_1.default.createElement(icons_material_1.ReportProblemRounded, { sx: { transform: 'scale(2)', marginY: 1, fill: '#3e3129' } }),
654
- react_1.default.createElement(material_1.Box, null, customErrorMsg ? (customErrorMsg) : (react_1.default.createElement(react_1.default.Fragment, null,
655
- "N\u00E3o foi poss\u00EDvel se conectar ao servidor no momento. Por favor, aguarde alguns instantes e tente de novo.",
656
- react_1.default.createElement("br", null),
657
- react_1.default.createElement("br", null),
658
- "Caso precise de ajuda, entre em contato pelo email: ",
659
- react_1.default.createElement("strong", null, "cdes@ssp.df.gov.br")))))))));
660
- if (isLoading)
661
- return (react_1.default.createElement(material_1.Stack, { sx: { height: '100%', width: '100%' }, justifyContent: 'center', alignItems: 'center' },
662
- react_1.default.createElement(material_1.Box, { width: '100%' },
663
- react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'center', alignItems: 'center', justifyItems: 'center', spacing: 2, marginY: 4 },
664
- react_1.default.createElement(icons_material_1.PendingRounded, { sx: { fill: '#5e5e5e' } }),
665
- react_1.default.createElement(Typography_1.default, { fontWeight: 600, fontSize: 20, textTransform: 'capitalize', textAlign: 'center', color: '#5e5e5e' },
666
- "Carregando ",
667
- tableName)),
668
- react_1.default.createElement(material_1.LinearProgress, { color: 'inherit' }),
669
- Array(10)
670
- .fill('')
671
- .map((x) => (react_1.default.createElement(material_1.Stack, { direction: {
672
- xs: 'column',
673
- md: 'row',
674
- }, spacing: {
675
- xs: 3,
676
- md: 1,
677
- }, justifyContent: 'space-between', paddingY: 8, borderBottom: '1px solid #cacaca' }, Array(7)
678
- .fill(0)
679
- .map((y) => (react_1.default.createElement(material_1.Box, null,
680
- react_1.default.createElement(material_1.Skeleton, { width: 60 }),
681
- react_1.default.createElement(material_1.Skeleton, { width: 120 }))))))))));
682
- if (!userLoaded && useKC)
683
- return react_1.default.createElement(material_1.LinearProgress, null);
684
- return (react_1.default.createElement(react_1.default.Fragment, null,
685
- react_1.default.createElement(material_1.Box, Object.assign({ marginX: isSmall ? customMarginMobile : customMargin, bgcolor: 'white', p: 2, borderRadius: 6 }, customTableStyle),
686
- react_1.default.createElement(material_1.Stack, { spacing: 1.5, direction: { xs: 'column', md: 'row' } },
687
- react_1.default.createElement(material_1.Stack, { spacing: 1.5, direction: { xs: 'column', md: 'row' }, height: { md: '40px', xs: 'inherit' }, width: '100%' },
688
- react_1.default.createElement(TextField_1.default, { InputProps: {
689
- startAdornment: react_1.default.createElement(Search_1.default, { sx: { marginRight: 1, fill: '#c0c0c0' } }),
690
- sx: {
691
- '.MuiOutlinedInput-notchedOutline': { border: 'none' },
692
- },
693
- }, sx: {
694
- border: 'solid 1px #CBD5E1',
695
- backgroundColor: '#F8FAFC',
696
- borderRadius: '50px',
697
- maxWidth: '600px',
698
- }, size: 'small', onChange: onInputChange, fullWidth: true, placeholder: `Pesquisar ${tableName}` }),
699
- filters.length > 0 && (react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(icons_material_1.FilterAlt, null), variant: 'contained', onClick: (e) => Modal_1.MODAL.open(react_1.default.createElement(CriarFiltro, { key: filterKey, reset: reset, filtrar: filtrar, baseFilters: [...filters], filters: localStorage.getItem(localTableName) ? JSON.parse(localStorage.getItem(localTableName)) : [...filters] })), sx: {
700
- borderRadius: 3,
701
- paddingX: '24px',
702
- paddingY: '8px',
703
- backgroundColor: '#208FE8',
704
- textTransform: 'capitalize',
705
- } },
706
- react_1.default.createElement(material_1.Stack, { direction: 'row', borderRadius: 5, padding: 0 },
707
- react_1.default.createElement("span", null, "Filtrar")))),
708
- react_1.default.createElement(material_1.Stack, { direction: 'row', spacing: 1 },
709
- react_1.default.createElement(CustomMenu_1.default, { data: orderBy.map((x) => ({
710
- name: x.label,
711
- onClick: () => ordenar(x),
712
- })), btProps: {
713
- startIcon: react_1.default.createElement(icons_material_1.KeyboardArrowDown, null),
714
- fullWidth: true,
715
- } }, "Ordenar"),
716
- react_1.default.createElement(material_1.Button, { variant: 'contained', fullWidth: true, startIcon: isExpandAll ? react_1.default.createElement(icons_material_1.KeyboardArrowUp, null) : react_1.default.createElement(icons_material_1.KeyboardArrowDown, null), sx: {
717
- backgroundColor: '#637082',
718
- ':hover': {
719
- backgroundColor: '#3c4757',
720
- },
721
- textTransform: 'capitalize',
722
- borderRadius: 3,
723
- padding: {
724
- md: '0px 8px',
725
- },
726
- }, onClick: expandAll }, isExpandAll ? 'Recolher' : 'Expandir'))),
727
- react_1.default.createElement(material_1.Stack, { alignItems: 'end', width: { xs: '100%', md: '20%' }, direction: { xs: 'row', md: 'column' }, spacing: { xs: 1, md: 0 } },
728
- react_1.default.createElement(Typography_1.default, { fontWeight: 600, textAlign: 'end' },
729
- "Registro de ",
730
- tableName,
731
- "s"),
732
- react_1.default.createElement(material_1.Stack, { justifyContent: 'center' },
733
- react_1.default.createElement(Typography_1.default, null,
734
- "Exibindo ",
735
- currentPage * itemsCount + 1,
736
- "-",
737
- currentPage * itemsCount + 1 + getMaxItems().length - 1,
738
- " de ",
739
- list.length)))),
740
- localStorage.getItem(localTableName) && (react_1.default.createElement(material_1.Box, { display: 'inline-flex', flexWrap: 'wrap', padding: 0.5, borderRadius: 4, marginBottom: 1 }, JSON.parse((_a = localStorage.getItem(localTableName)) !== null && _a !== void 0 ? _a : '[]')
741
- .filter((x) => x.value || (x.operator === 'entre' && (x.value || x.value2)))
742
- .map((x) => (react_1.default.createElement(material_1.Stack, { direction: 'row', spacing: 1, bgcolor: '#4e85c1', color: 'white', width: 'fit-content', paddingY: 0.5, borderRadius: 2, paddingX: 1, m: 0.5 },
743
- react_1.default.createElement(Typography_1.default, { fontWeight: 700 }, x.label),
744
- react_1.default.createElement(Typography_1.default, { fontStyle: 'italic' }, x.operator),
745
- react_1.default.createElement(Typography_1.default, { bgcolor: 'white', borderRadius: 2, paddingX: 1, color: 'black' }, Array.isArray(x.value)
746
- ? x.value.map((x) => x.label).join(' - ')
747
- : typeof x.value === 'object'
748
- ? x.value.label
749
- : x.operator === 'entre'
750
- ? `${x.value ? x.value : 'Antes'} e ${x.value2 ? x.value2 : 'Depois'}`
751
- : x.value.toString()),
752
- react_1.default.createElement(material_1.IconButton, { onClick: (e) => {
753
- var _a;
754
- let currentValue = JSON.parse((_a = localStorage.getItem(localTableName)) !== null && _a !== void 0 ? _a : '[]');
755
- currentValue = currentValue.map((item) => {
756
- if (item.label === x.label) {
757
- return Object.assign(Object.assign(Object.assign({}, item), { value: '' }), (item.value2 ? { value2: '' } : {}));
758
- }
759
- return item;
760
- });
761
- filtrar(currentValue);
762
- }, size: 'small', sx: {
763
- padding: 0,
764
- } },
765
- react_1.default.createElement(Clear_1.default, { sx: {
766
- fill: 'white',
767
- } }))))))),
768
- react_1.default.createElement(material_1.Stack, { spacing: 0.2 }, getMaxItems().length <= 0 ? (react_1.default.createElement(material_1.Stack, { sx: { backgroundColor: '#E2E8F0', padding: 2, marginX: { xs: 2, md: 0 } }, justifyContent: 'center', alignItems: 'center' },
769
- react_1.default.createElement(Typography_1.default, { fontSize: 21, fontFamily: 'Inter', fontWeight: 600, textAlign: 'center' }, user ? emptyMsg.user : emptyMsg.public))) : (getMaxItems().map((x, index) => (react_1.default.createElement(material_1.Paper, { key: index, sx: {
770
- padding: 0.5,
771
- backgroundColor: index % 2 === 0 ? '#F8FAFC' : 'white',
772
- paddingTop: 2,
773
- borderTop: 'solid 1.5px #E2E8F0',
774
- position: 'relative',
775
- }, elevation: 0 },
776
- react_1.default.createElement(Grid_1.default, { container: true, spacing: isSmall ? 2 : 0, paddingX: 2, rowSpacing: 2 },
777
- columns.map((c) => {
778
- var _a, _b;
779
- return (react_1.default.createElement(Grid_1.default, { key: String(c === null || c === void 0 ? void 0 : c.keyName) + index, item: true, xs: 12, md: lg ? (12 / columnSize) * (!!c.size ? c.size : 1) : mediaQueryLG ? mediaQueryLG.all : (12 / columnSize) * (!!c.size ? c.size : 1), sx: {
780
- overflow: 'hidden',
781
- } },
782
- react_1.default.createElement(material_1.Box, { sx: { width: 'max-content', paddingX: 1 } },
783
- react_1.default.createElement(Typography_1.default, { fontSize: 16, fontWeight: 700, color: '#1E293B', fontFamily: 'Inter' }, c.title)),
784
- react_1.default.createElement(material_1.Box, { paddingLeft: 1, position: 'relative' },
785
- react_1.default.createElement(material_1.Collapse, { in: expandObj[index] === true, collapsedSize: collapsedSize, onExited: (e) => setShowExpandObjOnExited((s) => (Object.assign(Object.assign({}, s), { [index]: false }))) },
786
- react_1.default.createElement(material_1.Box, { sx: {
787
- wordWrap: 'break-word',
788
- color: '#1E293B',
789
- fontSize: 16,
790
- }, fontFamily: 'Inter' },
791
- react_1.default.createElement(material_1.Box, null, c.customComponent ? (c.customComponent((0, lodash_get_1.default)(x, c.keyName), x)) : (react_1.default.createElement(material_1.Box, { color: 'transparent', sx: { pointerEvents: 'none', userSelect: 'none' } }, (0, lodash_get_1.default)(x, c.keyName, '')))),
792
- react_1.default.createElement(material_1.Box, { position: 'absolute', top: 0 }, c.customComponent ? (c.customComponent((0, lodash_get_1.default)(x, c.keyName), x)) : (react_1.default.createElement(react_1.default.Fragment, null, showExpandObjOnExited[index] ? ((0, lodash_get_1.default)(x, c === null || c === void 0 ? void 0 : c.keyName, '')) : ((_a = (0, lodash_get_1.default)(x, c === null || c === void 0 ? void 0 : c.keyName, '')) !== null && _a !== void 0 ? _a : '').toString().length >= expandTextMaxLength ? (react_1.default.createElement(react_1.default.Fragment, null, ((_b = (0, lodash_get_1.default)(x, c === null || c === void 0 ? void 0 : c.keyName, '')) !== null && _b !== void 0 ? _b : '').toString().substring(0, expandTextMaxLength) + '...')) : ((0, lodash_get_1.default)(x, c === null || c === void 0 ? void 0 : c.keyName, ''))))))))));
793
- }),
794
- react_1.default.createElement(Grid_1.default, { item: true, xs: 12, md: lg ? 12 / columnSize : mediaQueryLG ? mediaQueryLG.action : 12 / columnSize },
795
- react_1.default.createElement(material_1.Stack, { direction: 'row', alignItems: 'center', justifyContent: isSmall ? 'start' : 'flex-end', sx: { height: '100%', paddingBottom: isSmall ? 2 : 0 } }, action(x))),
796
- showExpandObj[index] && (react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'flex-end', bottom: 0, width: '100%' },
797
- react_1.default.createElement(material_1.Button, { onClick: (e) => {
798
- setExpandObj((s) => (Object.assign(Object.assign({}, s), { [index]: !s[index] })));
799
- setShowExpandObjOnExited((s) => (Object.assign(Object.assign({}, s), { [index]: true })));
800
- }, sx: {
801
- padding: 0,
802
- color: '#637082',
803
- textTransform: 'capitalize',
804
- }, startIcon: expandObj[index] ? react_1.default.createElement(icons_material_1.ExpandLess, null) : react_1.default.createElement(icons_material_1.ExpandMore, null) }, expandObj[index] ? 'Ver Menos' : 'Ver Mais'))))))))),
805
- getMaxItems().length > 0 && (react_1.default.createElement(material_1.Stack, { padding: 1, direction: {
806
- xs: 'column',
807
- md: 'row',
808
- }, spacing: {
809
- xs: 2,
810
- md: 0,
811
- }, justifyContent: 'space-between', alignItems: 'center' }, csv && (react_1.default.createElement(material_1.Stack, { direction: {
812
- xs: 'column',
813
- md: 'row',
814
- }, justifyContent: 'flex-end', spacing: 1 },
815
- csvWithoutZip && (react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(FileDownload_1.default, null), variant: 'contained', size: 'small', onClick: downloadCSV, sx: { backgroundColor: '#5a88b0', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } } }, csvNoZipText)),
816
- csvShowAllButton && (react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(FileDownload_1.default, null), variant: 'contained', size: 'small', onClick: downloadCSVAll, sx: { backgroundColor: '#64748B', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } } }, csvAllButtonTitle)),
817
- react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(FileDownload_1.default, null), variant: 'contained', size: 'small', onClick: (e) => downloadCSV(e, true), sx: { backgroundColor: '#22C55E', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } } }, csvButtonTitle)))))),
818
- react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'center', paddingY: 1, paddingTop: 2 },
819
- react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'center', alignItems: 'center', spacing: 2 },
820
- react_1.default.createElement(material_1.Button, { onClick: (e) => setListPage((s) => {
821
- if (s > 1) {
822
- return s - 1;
823
- }
824
- return 1;
825
- }), sx: { bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' } },
826
- react_1.default.createElement(NavigateNextRounded_1.default, { sx: { transform: 'scale(1.5) scaleX(-1)' } })),
827
- react_1.default.createElement(Pagination_1.default, { renderItem: (item) => {
828
- if (item.type === 'page')
829
- return (react_1.default.createElement(material_1.Button, { onClick: item.onClick, sx: Object.assign(Object.assign({ fontWeight: 600 }, (item.selected
830
- ? {
831
- bgcolor: '#33B55D',
832
- color: 'white',
833
- }
834
- : {
835
- color: '#1E293B',
836
- })), { borderRadius: '100%', padding: 0, margin: 0, minWidth: 0, width: '40px', height: '40px', marginX: 0.25 }) }, item.page));
837
- if (!['next', 'previous', 'page'].includes(item.type))
838
- return react_1.default.createElement(material_1.PaginationItem, Object.assign({}, item));
839
- }, count: paginationCount, siblingCount: isSmall ? 0 : 6, size: 'large', onChange: onPaginationChange, page: listPage, shape: 'circular', variant: 'outlined', sx: {
840
- '.MuiPagination-ul': {
841
- backgroundColor: 'white',
842
- border: 'solid 1px #E2E8F0',
843
- borderRadius: '50px',
844
- paddingX: 0.25,
845
- paddingY: 0.5,
846
- },
847
- } }),
848
- react_1.default.createElement(material_1.Button, { onClick: (e) => setListPage((s) => {
849
- if (s < paginationCount) {
850
- return s + 1;
851
- }
852
- return paginationCount;
853
- }), sx: { bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' } },
854
- react_1.default.createElement(NavigateNextRounded_1.default, { sx: { transform: 'scale(1.5)' } }))))));
855
- }
856
- exports.GenericTable = GenericTable;
857
- function CriarFiltro({ filters, baseFilters, filtrar, reset }) {
858
- const [data, setData] = (0, react_1.useState)(filters);
859
- const [resetFields, setResetFields] = (0, react_1.useState)(false);
860
- function addRule(filter) {
861
- setData((dt) => {
862
- return [...dt, filter];
863
- });
864
- }
865
- const [anchorEl, setAnchorEl] = react_1.default.useState(null);
866
- const open = Boolean(anchorEl);
867
- const handleClick = (event) => {
868
- setAnchorEl(event.currentTarget);
869
- };
870
- const handleClose = () => {
871
- setAnchorEl(null);
872
- };
873
- return (react_1.default.createElement(material_1.Box, { width: {
874
- xs: 'inherit',
875
- md: 850,
876
- } },
877
- react_1.default.createElement(material_1.Menu, { open: open, onClose: handleClose, anchorEl: anchorEl }, baseFilters.map((x) => (react_1.default.createElement(material_1.MenuItem, { onClick: (e) => {
878
- addRule(x);
879
- setAnchorEl(null);
880
- } }, x.label)))),
881
- react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'space-between' },
882
- react_1.default.createElement(Typography_1.default, { fontWeight: 700, fontSize: 18 }, "Filtrar"),
883
- react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(icons_material_1.Refresh, null), sx: {
884
- textTransform: 'capitalize',
885
- }, onClick: (e) => {
886
- reset();
887
- Modal_1.MODAL.close();
888
- } }, "Limpar")),
889
- react_1.default.createElement(material_1.Box, { marginBottom: 1 },
890
- react_1.default.createElement(material_1.Alert, { severity: 'warning' }, "Preencha apenas os campos que deseja filtrar.")),
891
- react_1.default.createElement(material_1.Stack, null, resetFields ? (data.map((d, idx) => (react_1.default.createElement(FilterRow, { filterValue: d, setReset: setResetFields, idx: idx, setDt: (valueData) => {
892
- setData((dt) => {
893
- let arr = [...dt];
894
- arr[idx] = valueData;
895
- return arr;
896
- });
897
- }, removeDt: () => {
898
- setData((dt) => {
899
- let arr = [...dt];
900
- arr.splice(idx, 1);
901
- return arr;
902
- });
903
- } })))) : (react_1.default.createElement(material_1.Box, null, data.map((d, idx) => (react_1.default.createElement(FilterRow, { filterValue: d, setReset: setResetFields, idx: idx, setDt: (valueData) => {
904
- setData((dt) => {
905
- let arr = [...dt];
906
- arr[idx] = valueData;
907
- return arr;
908
- });
909
- }, removeDt: () => {
910
- setData((dt) => {
911
- let arr = [...dt];
912
- arr.splice(idx, 1);
913
- return arr;
914
- });
915
- } })))))),
916
- react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'flex-end', marginTop: 1 },
917
- react_1.default.createElement(material_1.Button, { variant: 'contained', color: 'success', startIcon: react_1.default.createElement(Search_1.default, null), sx: {
918
- textTransform: 'capitalize',
919
- }, onClick: (e) => {
920
- filtrar(data);
921
- Modal_1.MODAL.close();
922
- } }, "Filtrar"))));
923
- }
924
- function FilterRow({ filterValue, setDt, removeDt, idx, setReset, }) {
925
- const [currentOperator, setCurrentOperator] = (0, react_1.useState)(filterValue.operator);
926
- const [data, setData] = (0, react_1.useState)(filterValue);
927
- const theme = (0, material_1.useTheme)();
928
- const isSmall = (0, material_1.useMediaQuery)(theme.breakpoints.only('xs'));
929
- (0, react_1.useEffect)(() => {
930
- setDt(data);
931
- }, [data]);
932
- return (react_1.default.createElement(material_1.Stack, { direction: 'row', alignItems: 'end', spacing: 1, width: '100%', bgcolor: idx % 2 === 0 ? '#ededed' : 'inherit', padding: 0.5, borderRadius: 2 },
933
- !isSmall && (react_1.default.createElement(Typography_1.default, { width: '100%', alignContent: 'center', fontWeight: 600, color: '#323232' }, filterValue.label)),
934
- react_1.default.createElement(material_1.FormControl, { sx: {
935
- width: '100%',
936
- } },
937
- isSmall && react_1.default.createElement(Typography_1.default, null, filterValue.label),
938
- react_1.default.createElement(material_1.Select, { onChange: (e) => {
939
- const value = e.target.value;
940
- setData((obj) => (Object.assign(Object.assign({}, obj), { operator: value, value: '' })));
941
- setCurrentOperator(value);
942
- }, defaultValue: currentOperator, size: 'small', sx: {
943
- bgcolor: 'white',
944
- }, fullWidth: true }, filterValue.operators.map((x) => (react_1.default.createElement(material_1.MenuItem, { value: x }, x))))),
945
- react_1.default.createElement(FilterField, { filterValue: filterValue, operator: data.operator, onChange: (value, type = 'value') => {
946
- setData((obj) => (Object.assign(Object.assign({}, obj), { [type]: value })));
947
- } })));
948
- }
949
- function FilterField({ filterValue, operator, onChange }) {
950
- switch (filterValue.type) {
951
- case 'number':
952
- return (react_1.default.createElement(TextField_1.default, { type: 'number', size: 'small', placeholder: 'Valor', defaultValue: filterValue.value, onChange: (e) => {
953
- onChange(e.target.value);
954
- }, sx: {
955
- bgcolor: 'white',
956
- }, fullWidth: true }));
957
- case 'string':
958
- if (filterValue.useList) {
959
- switch (operator) {
960
- case 'tem um dos':
961
- return (react_1.default.createElement(material_1.Autocomplete, { multiple: true, id: 'tags-standard', onChange: (e, value) => {
962
- if (value.length <= 0) {
963
- onChange('');
964
- return;
965
- }
966
- onChange(value);
967
- }, options: filterValue.useList, defaultValue: Array.isArray(filterValue.value) ? filterValue.value : [], renderInput: (params) => react_1.default.createElement(TextField_1.default, Object.assign({}, params, { variant: 'standard', placeholder: 'Escolha os valores', fullWidth: true })), fullWidth: true }));
968
- case 'contem':
969
- case 'igual':
970
- return (react_1.default.createElement(material_1.Box, { width: '100%' },
971
- react_1.default.createElement(material_1.Autocomplete, { options: filterValue.useList, onChange: (e, value) => {
972
- onChange(value);
973
- }, defaultValue: typeof filterValue.value === 'object' ? filterValue.value : undefined, isOptionEqualToValue: (option, value) => option.label === value.label, renderInput: (params) => (react_1.default.createElement(TextField_1.default, Object.assign({}, params, { size: 'small', placeholder: 'Escolha um valor', fullWidth: true, sx: {
974
- bgcolor: 'white',
975
- } }))), fullWidth: true })));
976
- }
977
- }
978
- return (react_1.default.createElement(TextField_1.default, { size: 'small', placeholder: 'Valor', defaultValue: filterValue.value, onChange: (e) => {
979
- onChange(e.target.value);
980
- }, sx: {
981
- bgcolor: 'white',
982
- }, fullWidth: true }));
983
- case 'date':
984
- case 'dates':
985
- switch (operator) {
986
- case 'data exata':
987
- case 'data fim':
988
- case 'data inicio':
989
- case 'tem a data':
990
- return (react_1.default.createElement(x_date_pickers_1.LocalizationProvider, { adapterLocale: 'pt-br', dateAdapter: AdapterDayjs_1.AdapterDayjs },
991
- react_1.default.createElement(x_date_pickers_1.DatePicker, { format: 'DD/MM/YYYY', onChange: (dt) => {
992
- onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '');
993
- }, defaultValue: filterValue.value ? (0, dayjs_1.default)(filterValue.value, 'DD/MM/YYYY') : undefined, sx: {
994
- div: {
995
- input: {
996
- paddingX: 2,
997
- paddingY: 1.05,
998
- },
999
- },
1000
- width: '100%',
1001
- bgcolor: 'white',
1002
- }, inputRef: (params) => react_1.default.createElement(TextField_1.default, Object.assign({}, params, { size: 'small', fullWidth: true })) })));
1003
- case 'entre':
1004
- return (react_1.default.createElement(x_date_pickers_1.LocalizationProvider, { adapterLocale: 'pt-br', dateAdapter: AdapterDayjs_1.AdapterDayjs },
1005
- react_1.default.createElement(x_date_pickers_1.DatePicker, { format: 'DD/MM/YYYY', onChange: (dt) => {
1006
- onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '');
1007
- }, defaultValue: filterValue.value ? (0, dayjs_1.default)(filterValue.value, 'DD/MM/YYYY') : undefined, sx: {
1008
- div: {
1009
- input: {
1010
- paddingX: 2,
1011
- paddingY: 1.05,
1012
- },
1013
- },
1014
- width: '100%',
1015
- bgcolor: 'white',
1016
- }, inputRef: (params) => react_1.default.createElement(TextField_1.default, Object.assign({}, params, { size: 'small', fullWidth: true })) }),
1017
- react_1.default.createElement(x_date_pickers_1.DatePicker, { format: 'DD/MM/YYYY', onChange: (dt) => {
1018
- onChange(dt.isValid() ? dt.format('DD/MM/YYYY') : '', 'value2');
1019
- }, defaultValue: filterValue.value2 ? (0, dayjs_1.default)(filterValue.value2, 'DD/MM/YYYY') : undefined, sx: {
1020
- div: {
1021
- input: {
1022
- paddingX: 2,
1023
- paddingY: 1.05,
1024
- },
1025
- },
1026
- width: '100%',
1027
- bgcolor: 'white',
1028
- }, inputRef: (params) => react_1.default.createElement(TextField_1.default, Object.assign({}, params, { size: 'small', fullWidth: true })) })));
1029
- }
1030
- break;
1031
- }
1032
- return react_1.default.createElement(react_1.default.Fragment, null);
1033
- }
1034
- exports.default = react_1.default.memo(GenericTable);