@ssplib/react-components 0.0.295 → 0.0.296

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 (139) hide show
  1. package/components/detalhes/Category.d.ts +1 -0
  2. package/components/detalhes/Category.js +14 -0
  3. package/components/detalhes/Field.d.ts +1 -0
  4. package/components/detalhes/Field.js +42 -0
  5. package/components/detalhes/FieldLabel.d.ts +1 -0
  6. package/components/detalhes/FieldLabel.js +28 -0
  7. package/components/detalhes/File.d.ts +1 -0
  8. package/components/detalhes/File.js +62 -0
  9. package/components/form/checkbox/CheckBox.js +18 -0
  10. package/components/form/checkbox/CheckBoxAdditional.d.ts +1 -0
  11. package/components/form/checkbox/CheckBoxAdditional.js +95 -0
  12. package/components/form/checkbox/CheckBoxWarning.js +43 -0
  13. package/components/form/checkbox/RequiredCheckBoxValidator.d.ts +1 -0
  14. package/components/form/checkbox/RequiredCheckBoxValidator.js +85 -0
  15. package/components/form/date/DatePicker.d.ts +1 -0
  16. package/components/form/date/DatePicker.js +105 -0
  17. package/components/form/date/GenericDatePicker.d.ts +1 -0
  18. package/components/form/date/GenericDatePicker.js +105 -0
  19. package/components/form/date/TimePicker.d.ts +1 -0
  20. package/components/form/date/TimePicker.js +82 -0
  21. package/components/form/file/DropFileUpload.d.ts +1 -0
  22. package/components/form/file/DropFileUpload.js +226 -0
  23. package/components/form/file/FileUpload.d.ts +1 -0
  24. package/components/form/file/FileUpload.js +200 -0
  25. package/components/form/input/ActiveInput.js +33 -0
  26. package/components/form/input/AutoComplete.d.ts +1 -0
  27. package/components/form/input/AutoComplete.js +69 -0
  28. package/components/form/input/FetchAutoComplete.d.ts +1 -0
  29. package/components/form/input/FetchAutoComplete.js +134 -0
  30. package/components/form/input/FixedAutoComplete.d.ts +1 -0
  31. package/components/form/input/FixedAutoComplete.js +83 -0
  32. package/components/form/input/GenericFetchAutoComplete.d.ts +1 -0
  33. package/components/form/input/GenericFetchAutoComplete.js +132 -0
  34. package/components/form/input/GenericInput.js +168 -0
  35. package/components/form/input/GenericMaskInput.js +79 -0
  36. package/components/form/input/GenericMultInput.d.ts +1 -0
  37. package/components/form/input/GenericMultInput.js +67 -0
  38. package/components/form/input/Input.js +168 -0
  39. package/components/form/input/MaskInput.js +78 -0
  40. package/components/form/input/MultInput.d.ts +1 -0
  41. package/components/form/input/MultInput.js +67 -0
  42. package/components/form/input/OtherCheckBox.d.ts +1 -0
  43. package/components/form/input/OtherCheckBox.js +56 -0
  44. package/components/form/stepper/Stepper.js +135 -0
  45. package/components/form/stepper/StepperBlock.js +97 -0
  46. package/components/form/switch/Switch.js +54 -0
  47. package/components/form/switch/ToggleVisibility.d.ts +1 -0
  48. package/components/form/switch/ToggleVisibility.js +61 -0
  49. package/components/form/table/FilterSection.d.ts +1 -0
  50. package/components/form/table/FilterSection.js +217 -0
  51. package/components/form/table/GenericTable.js +1034 -0
  52. package/components/form/table/Table.js +514 -0
  53. package/components/form/table/TableErrorState.js +27 -0
  54. package/components/form/table/TableLoadingState.d.ts +1 -0
  55. package/components/form/table/TableLoadingState.js +39 -0
  56. package/components/form/table/types.js +2 -0
  57. package/components/form/table/utils.d.ts +1 -0
  58. package/components/form/table/utils.js +361 -0
  59. package/components/icons/icons.d.ts +1 -0
  60. package/components/icons/icons.js +24 -0
  61. package/components/map/AnimatedMarker.js +65 -0
  62. package/components/map/DraggableMarker.js +66 -0
  63. package/components/map/Map.js +23 -0
  64. package/components/map/index.d.ts +1 -0
  65. package/components/map/index.js +31 -0
  66. package/components/modal/Modal.d.ts +1 -0
  67. package/components/modal/Modal.js +105 -0
  68. package/components/navbar/NavBar.d.ts +1 -0
  69. package/components/navbar/NavBar.js +171 -0
  70. package/components/navbar/TabNavBar.d.ts +1 -0
  71. package/components/navbar/TabNavBar.js +179 -0
  72. package/components/providers/FormProvider.js +54 -0
  73. package/components/providers/KeycloakAuthProvider.d.ts +1 -0
  74. package/components/providers/KeycloakAuthProvider.js +118 -0
  75. package/components/providers/OAuthProvider.d.ts +1 -0
  76. package/components/providers/OAuthProvider.js +138 -0
  77. package/components/providers/SspComponentsProvider.d.ts +1 -0
  78. package/components/providers/SspComponentsProvider.js +18 -0
  79. package/components/utils/Bt.d.ts +1 -0
  80. package/components/utils/Bt.js +35 -0
  81. package/components/utils/CustomMenu.js +39 -0
  82. package/context/auth.d.ts +1 -0
  83. package/context/auth.js +5 -0
  84. package/context/form.js +5 -0
  85. package/index.d.ts +18 -18
  86. package/index.js +94 -0
  87. package/package.json +1 -1
  88. package/types/auth.js +2 -0
  89. package/types/form.js +31 -0
  90. package/Map-31d95a26.js +0 -2
  91. package/Map-31d95a26.js.map +0 -1
  92. package/Map-644d2f90.js +0 -2
  93. package/Map-644d2f90.js.map +0 -1
  94. package/components/form/input/OptionalInput.d.ts +0 -10
  95. package/components/loading/LinearProgress.d.ts +0 -2
  96. package/components/loading/LoadingScreen.d.ts +0 -7
  97. package/components/providers/GenericFormProvider.d.ts +0 -10
  98. package/components/teste/Teste.d.ts +0 -3
  99. package/decorators/FormBaseDecorator.d.ts +0 -2
  100. package/decorators/GenericFormBaseDecorator.d.ts +0 -2
  101. package/decorators/StepperDecorator.d.ts +0 -2
  102. package/index.cjs +0 -3
  103. package/index.cjs.map +0 -1
  104. package/index.esm.js +0 -3
  105. package/index.esm.js.map +0 -1
  106. package/stories/Autocomplete.stories.d.ts +0 -6
  107. package/stories/CheckBox.stories.d.ts +0 -6
  108. package/stories/CheckBoxWarning.stories.d.ts +0 -6
  109. package/stories/DatePicker.stories.d.ts +0 -6
  110. package/stories/DetalhesCategory.stories.d.ts +0 -6
  111. package/stories/DetalhesField.stories.d.ts +0 -6
  112. package/stories/DetalhesFieldLabel.stories.d.ts +0 -6
  113. package/stories/DetalhesFile.stories.d.ts +0 -6
  114. package/stories/DropFileUpload.stories.d.ts +0 -6
  115. package/stories/ExemploAssitirValorInput.stories.d.ts +0 -7
  116. package/stories/ExemploInputs.stories.d.ts +0 -7
  117. package/stories/ExemploTable.stories.d.ts +0 -1
  118. package/stories/ExemploValoresCompartilhados.stories.d.ts +0 -7
  119. package/stories/FetchAutocomplete.stories.d.ts +0 -6
  120. package/stories/FileUpload.stories.d.ts +0 -6
  121. package/stories/FixedAutocomplete.stories.d.ts +0 -6
  122. package/stories/GenericFetchAutocomplete.stories.d.ts +0 -6
  123. package/stories/GenericInput.stories.d.ts +0 -6
  124. package/stories/GenericTable.stories.d.ts +0 -6
  125. package/stories/Input.stories.d.ts +0 -6
  126. package/stories/LinearProgress.stories.d.ts +0 -6
  127. package/stories/LoadingScreen.stories.d.ts +0 -6
  128. package/stories/Map.stories.d.ts +0 -6
  129. package/stories/MultInput.stories.d.ts +0 -6
  130. package/stories/NavBar.stories.d.ts +0 -6
  131. package/stories/OptionalInput.stories.d.ts +0 -6
  132. package/stories/OtherCheckBox.stories.d.ts +0 -6
  133. package/stories/Stepper.stories.d.ts +0 -6
  134. package/stories/StepperBlock.stories.d.ts +0 -6
  135. package/stories/Switch.stories.d.ts +0 -6
  136. package/stories/Table.stories.d.ts +0 -4
  137. package/stories/TableWithStaticData.stories.d.ts +0 -6
  138. package/stories/Teste.stories.d.ts +0 -6
  139. package/stories/TimePicker.stories.d.ts +0 -6
@@ -0,0 +1,514 @@
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.Table = void 0;
30
+ const TableErrorState_1 = require("./TableErrorState");
31
+ const icons_material_1 = require("@mui/icons-material");
32
+ const Clear_1 = __importDefault(require("@mui/icons-material/Clear"));
33
+ const FileDownload_1 = __importDefault(require("@mui/icons-material/FileDownload"));
34
+ const NavigateNextRounded_1 = __importDefault(require("@mui/icons-material/NavigateNextRounded"));
35
+ const Search_1 = __importDefault(require("@mui/icons-material/Search"));
36
+ const material_1 = require("@mui/material");
37
+ const Grid_1 = __importDefault(require("@mui/material/Grid"));
38
+ const Pagination_1 = __importDefault(require("@mui/material/Pagination"));
39
+ const TextField_1 = __importDefault(require("@mui/material/TextField"));
40
+ const Typography_1 = __importDefault(require("@mui/material/Typography"));
41
+ const lodash_get_1 = __importDefault(require("lodash.get"));
42
+ const react_1 = __importStar(require("react"));
43
+ const auth_1 = require("../../../context/auth");
44
+ const Modal_1 = require("../../modal/Modal");
45
+ const CustomMenu_1 = __importDefault(require("../../utils//CustomMenu"));
46
+ const TableLoadingState_1 = require("./TableLoadingState");
47
+ const utils_1 = require("./utils");
48
+ const FilterSection_1 = require("./FilterSection");
49
+ let isExpandAll = false;
50
+ let localTableName = '';
51
+ let filtersFuncData = {};
52
+ let localTableNameCache = '';
53
+ function Table({ mediaQueryLG, columns, csvConfig, fetchFunc, emptyMsg = {
54
+ user: 'Nenhum dado encontrado',
55
+ public: 'Nenhum dado encontrado',
56
+ }, dataPath = '', tableName = 'Dado', columnSize, action, useKC = true, itemCount = 10, expandTextMaxLength = 50, collapsedSize = 53, customMargin = 4, customMarginMobile = 0, filtersFunc, filters = [], orderBy = [], customErrorMsg = undefined, customTableStyle = {}, id, initialData = null, isExpandable = true, }) {
57
+ var _a, _b;
58
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
59
+ const [error, setError] = (0, react_1.useState)(null);
60
+ const [data, setData] = (0, react_1.useState)(initialData);
61
+ /** startData Dado puro, sem filtro ou ordenação */
62
+ const { user, userLoaded } = (0, react_1.useContext)(auth_1.AuthContext);
63
+ const [list, setList] = (0, react_1.useState)([]);
64
+ const [listClone, setListClone] = (0, react_1.useState)([]);
65
+ //numero de items pra ser mostrado
66
+ const [itemsCount, setItemsCount] = (0, react_1.useState)(itemCount);
67
+ const [currentPage, setCurrentPage] = (0, react_1.useState)(0);
68
+ const [paginationCount, setPagCount] = (0, react_1.useState)(1);
69
+ const [listPage, setListPage] = (0, react_1.useState)(1);
70
+ const [expandObj, setExpandObj] = (0, react_1.useState)({});
71
+ const [showExpandObj, setShowExpandObj] = (0, react_1.useState)({});
72
+ const [showExpandObjOnExited, setShowExpandObjOnExited] = (0, react_1.useState)({});
73
+ const [filterKey, setFilterKey] = (0, react_1.useState)('filterKey');
74
+ const theme = (0, material_1.useTheme)();
75
+ const isSmall = (0, material_1.useMediaQuery)(theme.breakpoints.only('xs'));
76
+ const startData = (0, react_1.useRef)(data);
77
+ const orderAsc = (0, react_1.useRef)((localStorage.getItem(`order-${id}`) === 'true') || false);
78
+ const lg = (0, material_1.useMediaQuery)(theme.breakpoints.up(2000));
79
+ localTableName = `tableFilter_${id}`;
80
+ localTableNameCache = `tableFilterCache_${id}`;
81
+ filtersFuncData = filtersFunc !== null && filtersFunc !== void 0 ? filtersFunc : {};
82
+ if (!localStorage.getItem(localTableNameCache))
83
+ localStorage.setItem(localTableNameCache, JSON.stringify(filters));
84
+ if (localStorage.getItem(localTableNameCache) !== JSON.stringify(filters)) {
85
+ localStorage.setItem(localTableNameCache, JSON.stringify(filters));
86
+ localStorage.removeItem(localTableName);
87
+ }
88
+ (0, react_1.useEffect)(() => {
89
+ setError(null);
90
+ if (!fetchFunc)
91
+ return;
92
+ if (userLoaded || !useKC) {
93
+ setIsLoading(true);
94
+ fetchFunc()
95
+ .then((res) => {
96
+ if (!res.ok) {
97
+ setError({
98
+ status: 500,
99
+ });
100
+ setIsLoading(false);
101
+ return;
102
+ }
103
+ return res.json().then((j) => {
104
+ if (j.statusCode === 204) {
105
+ setData({ body: { data: [] } });
106
+ startData.current = [];
107
+ }
108
+ else if (j.statusCode === 403)
109
+ setError({
110
+ status: j.statusCode,
111
+ });
112
+ else {
113
+ let value = dataPath ? (0, lodash_get_1.default)(j, dataPath) : j;
114
+ if (!value || !Array.isArray(value)) {
115
+ setData({ body: { data: [] } });
116
+ startData.current = [];
117
+ }
118
+ else {
119
+ let newValue = value;
120
+ // começando a ordenação padrão
121
+ if (localStorage.getItem(`order-data-${id}`)) {
122
+ try {
123
+ const orderData = JSON.parse(localStorage.getItem(`order-data-${id}`));
124
+ newValue = (0, utils_1.ordenarDados)({
125
+ order: orderData,
126
+ list: value,
127
+ orderAsc: orderAsc.current,
128
+ });
129
+ }
130
+ catch (err) {
131
+ console.log(err);
132
+ }
133
+ }
134
+ else if (orderBy.length > 0) {
135
+ // se não tiver salvo uma ordenação, ordena pelo primeiro da lista
136
+ newValue = (0, utils_1.ordenarDados)({
137
+ order: orderBy[0],
138
+ list: value,
139
+ orderAsc: orderAsc.current,
140
+ });
141
+ }
142
+ setData(newValue);
143
+ startData.current = JSON.parse(JSON.stringify(newValue));
144
+ }
145
+ }
146
+ setIsLoading(false);
147
+ });
148
+ })
149
+ .catch((err) => {
150
+ setError({
151
+ status: 500,
152
+ });
153
+ });
154
+ }
155
+ }, [userLoaded, fetchFunc]);
156
+ const getData = (0, react_1.useCallback)((dt) => {
157
+ if (Array.isArray(dt))
158
+ return dt;
159
+ if (typeof dt === 'object')
160
+ return (0, lodash_get_1.default)(dt, dataPath);
161
+ }, []);
162
+ (0, react_1.useEffect)(() => {
163
+ if (isLoading || error || !getData(data))
164
+ return;
165
+ let value = getData(data);
166
+ setList(value);
167
+ setListClone(value);
168
+ setPagCount((0, utils_1.getCount)(value, itemsCount));
169
+ if (localStorage.getItem(localTableName)) {
170
+ (0, utils_1.filtrarDados)({
171
+ filterData: JSON.parse(localStorage.getItem(localTableName)),
172
+ filtersFuncData: filtersFuncData,
173
+ localTableName: localTableName,
174
+ setCurrentPage: setCurrentPage,
175
+ setList,
176
+ setListClone,
177
+ setListPage,
178
+ setPagCount,
179
+ startData: startData.current,
180
+ itemsCount,
181
+ });
182
+ }
183
+ }, [itemsCount, isLoading, data, error]);
184
+ (0, react_1.useEffect)(() => {
185
+ setCurrentPage(listPage - 1);
186
+ }, [listPage]);
187
+ const onPaginationChange = (0, react_1.useCallback)((e, page) => {
188
+ setListPage(page);
189
+ }, []);
190
+ function onInputChange(e) {
191
+ const searchValue = e.target.value;
192
+ if (searchValue === '') {
193
+ setList(listClone);
194
+ setPagCount((0, utils_1.getCount)(getData(list), itemsCount));
195
+ return;
196
+ }
197
+ const listData = getData(list);
198
+ const newList = [];
199
+ listData.forEach((x) => {
200
+ const dataStr = [];
201
+ Object.keys(x).map((key) => {
202
+ var _a;
203
+ let value = (_a = (0, lodash_get_1.default)(x, key, '')) !== null && _a !== void 0 ? _a : '';
204
+ if (typeof value === 'number')
205
+ value = value.toString();
206
+ if (typeof value !== 'string')
207
+ return;
208
+ dataStr.push(value);
209
+ });
210
+ if (dataStr.length <= 0)
211
+ return;
212
+ let exists = false;
213
+ dataStr.forEach((key) => {
214
+ const status = ['P', 'C', 'A', 'R', 'L', 'PA'];
215
+ if (status.includes(key)) {
216
+ switch (key) {
217
+ case 'P':
218
+ if ('em analise'.includes(searchValue.toLowerCase())) {
219
+ exists = true;
220
+ }
221
+ return;
222
+ case 'C':
223
+ if ('cancelado'.includes(searchValue.toLowerCase())) {
224
+ exists = true;
225
+ }
226
+ return;
227
+ case 'A':
228
+ if ('cadastrado'.includes(searchValue.toLowerCase())) {
229
+ exists = true;
230
+ }
231
+ return;
232
+ case 'R':
233
+ if ('reprovado'.includes(searchValue.toLowerCase())) {
234
+ exists = true;
235
+ }
236
+ return;
237
+ case 'L':
238
+ if ('licenciado'.includes(searchValue.toLowerCase())) {
239
+ exists = true;
240
+ }
241
+ return;
242
+ case 'PA':
243
+ if ('pré aprovado'.includes(searchValue.toLowerCase()) || 'pre aprovado'.includes(searchValue.toLowerCase())) {
244
+ exists = true;
245
+ }
246
+ return;
247
+ case 'FP':
248
+ if ('fora do prazo'.includes(searchValue.toLowerCase())) {
249
+ exists = true;
250
+ }
251
+ return;
252
+ }
253
+ }
254
+ if ((0, utils_1.removePunctuationAndAccents)(key.toLowerCase()).includes((0, utils_1.removePunctuationAndAccents)(searchValue.toLowerCase()))) {
255
+ exists = true;
256
+ }
257
+ });
258
+ if (!exists)
259
+ return;
260
+ newList.push(x);
261
+ });
262
+ setList(newList);
263
+ setPagCount((0, utils_1.getCount)(newList, itemsCount));
264
+ setCurrentPage(0);
265
+ setListPage(1);
266
+ }
267
+ const getMaxItems = (0, react_1.useCallback)(() => {
268
+ const start = currentPage * itemsCount;
269
+ return list.slice(start, start + itemsCount);
270
+ }, [list, itemsCount, currentPage]);
271
+ // effect usado quando for mostrar "VER MAIS" e "VER MENOS"
272
+ (0, react_1.useEffect)(() => {
273
+ const start = currentPage * itemsCount;
274
+ const newList = list.slice(start, start + itemsCount);
275
+ let obj = {};
276
+ newList.forEach((x, index) => {
277
+ columns.forEach((c) => {
278
+ var _a;
279
+ obj[index] = obj[index] === true ? true : ((_a = (0, lodash_get_1.default)(x, c.keyName, '')) !== null && _a !== void 0 ? _a : 'Não Informado').toString().length >= expandTextMaxLength;
280
+ });
281
+ });
282
+ setShowExpandObj(obj);
283
+ }, [list, itemsCount, currentPage]);
284
+ function expandAll() {
285
+ let obj = {};
286
+ for (let i = 0; i < itemCount; i++) {
287
+ obj[i] = !isExpandAll;
288
+ }
289
+ setShowExpandObjOnExited(obj);
290
+ setExpandObj(obj);
291
+ isExpandAll = !isExpandAll;
292
+ }
293
+ function reset() {
294
+ setList(startData.current);
295
+ setListClone(startData.current);
296
+ setPagCount((0, utils_1.getCount)(startData.current, itemsCount));
297
+ setCurrentPage(0);
298
+ setListPage(1);
299
+ localStorage.removeItem(localTableName);
300
+ setFilterKey(new Date().getTime().toString());
301
+ }
302
+ const handleCSVDownload = (list, all = false) => {
303
+ var _a;
304
+ if (!csvConfig)
305
+ return;
306
+ (0, utils_1.downloadCSVFile)(list, Object.assign(Object.assign({}, csvConfig), (all ? { downloadAll: true } : {})), JSON.parse((_a = localStorage.getItem(localTableName)) !== null && _a !== void 0 ? _a : '[]') || []);
307
+ };
308
+ const handleFiltrarDados = (dt) => {
309
+ (0, utils_1.filtrarDados)({
310
+ filterData: dt,
311
+ filtersFuncData: filtersFuncData,
312
+ localTableName: localTableName,
313
+ setCurrentPage: setCurrentPage,
314
+ setList,
315
+ setListClone,
316
+ setListPage,
317
+ setPagCount,
318
+ startData: startData.current,
319
+ itemsCount,
320
+ });
321
+ };
322
+ const handleOrdenarDados = (x) => {
323
+ /** Inverter a ordem de ordenação no segundo clique */
324
+ orderAsc.current = !orderAsc.current;
325
+ const dadosOrdenados = (0, utils_1.ordenarDados)({
326
+ order: x,
327
+ list,
328
+ orderAsc: orderAsc.current,
329
+ });
330
+ localStorage.setItem(`order-${id}`, orderAsc.current.toString());
331
+ localStorage.setItem(`order-data-${id}`, JSON.stringify(x));
332
+ setList(dadosOrdenados);
333
+ };
334
+ if (error)
335
+ return react_1.default.createElement(TableErrorState_1.TableErrorState, { customErrorMsg: customErrorMsg, error: error });
336
+ if (isLoading)
337
+ return react_1.default.createElement(TableLoadingState_1.TableLoadingState, { tableName: tableName });
338
+ if (!userLoaded && useKC)
339
+ return react_1.default.createElement(material_1.LinearProgress, null);
340
+ return (react_1.default.createElement(react_1.default.Fragment, null,
341
+ react_1.default.createElement(material_1.Box, Object.assign({ marginX: isSmall ? customMarginMobile : customMargin, bgcolor: 'white', p: 2, borderRadius: 6 }, customTableStyle),
342
+ react_1.default.createElement(material_1.Stack, { spacing: 1.5, direction: { xs: 'column', md: 'row' } },
343
+ react_1.default.createElement(material_1.Stack, { spacing: 1.5, direction: { xs: 'column', md: 'row' }, height: { md: '40px', xs: 'inherit' }, width: '100%' },
344
+ react_1.default.createElement(TextField_1.default, { InputProps: {
345
+ startAdornment: react_1.default.createElement(Search_1.default, { sx: { marginRight: 1, fill: '#c0c0c0' } }),
346
+ sx: {
347
+ '.MuiOutlinedInput-notchedOutline': { border: 'none' },
348
+ },
349
+ }, sx: {
350
+ border: 'solid 1px #CBD5E1',
351
+ backgroundColor: '#F8FAFC',
352
+ borderRadius: '50px',
353
+ maxWidth: '600px',
354
+ }, size: 'small', onChange: onInputChange, fullWidth: true, placeholder: `Pesquisar ${tableName}` }),
355
+ 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(FilterSection_1.FilterMenu, { key: filterKey, reset: reset, filtrar: (dt) => handleFiltrarDados(dt), baseFilters: [...filters], filters: localStorage.getItem(localTableName) ? JSON.parse(localStorage.getItem(localTableName)) : [...filters] })), sx: {
356
+ borderRadius: 3,
357
+ paddingX: '24px',
358
+ paddingY: '8px',
359
+ backgroundColor: '#208FE8',
360
+ textTransform: 'capitalize',
361
+ } },
362
+ react_1.default.createElement(material_1.Stack, { direction: 'row', borderRadius: 5, padding: 0 },
363
+ react_1.default.createElement("span", null, "Filtrar"))),
364
+ react_1.default.createElement(material_1.Stack, { direction: 'row', spacing: 1 },
365
+ orderBy.length > 0 && react_1.default.createElement(CustomMenu_1.default, { data: orderBy.map((x) => ({
366
+ name: x.label,
367
+ onClick: () => handleOrdenarDados(x),
368
+ })), btProps: {
369
+ startIcon: react_1.default.createElement(icons_material_1.KeyboardArrowDown, null),
370
+ fullWidth: true,
371
+ } }, "Ordenar"),
372
+ isExpandable && (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: {
373
+ backgroundColor: '#637082',
374
+ ':hover': {
375
+ backgroundColor: '#3c4757',
376
+ },
377
+ textTransform: 'capitalize',
378
+ borderRadius: 3,
379
+ padding: {
380
+ md: '0px 8px',
381
+ },
382
+ }, onClick: expandAll }, isExpandAll ? 'Recolher' : 'Expandir')))),
383
+ react_1.default.createElement(material_1.Stack, { alignItems: 'end', width: { xs: '100%', md: '20%' }, direction: { xs: 'row', md: 'column' }, spacing: { xs: 1, md: 0 } },
384
+ react_1.default.createElement(Typography_1.default, { fontWeight: 600, textAlign: 'end' },
385
+ "Registro de ",
386
+ tableName,
387
+ "s"),
388
+ react_1.default.createElement(material_1.Stack, { justifyContent: 'center' },
389
+ react_1.default.createElement(Typography_1.default, null,
390
+ "Exibindo ",
391
+ currentPage * itemsCount + 1,
392
+ "-",
393
+ currentPage * itemsCount + 1 + getMaxItems().length - 1,
394
+ " de ",
395
+ list.length)))),
396
+ 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 : '[]')
397
+ .filter((x) => x.value || (x.operator === 'entre' && (x.value || x.value2)))
398
+ .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 },
399
+ react_1.default.createElement(Typography_1.default, { fontWeight: 700 }, x.label),
400
+ react_1.default.createElement(Typography_1.default, { fontStyle: 'italic' }, x.operator),
401
+ react_1.default.createElement(Typography_1.default, { bgcolor: 'white', borderRadius: 2, paddingX: 1, color: 'black' }, Array.isArray(x.value)
402
+ ? x.value.map((x) => x.label).join(' - ')
403
+ : typeof x.value === 'object'
404
+ ? x.value.label
405
+ : x.operator === 'entre'
406
+ ? `${x.value ? x.value : 'Antes'} e ${x.value2 ? x.value2 : 'Depois'}`
407
+ : x.value.toString()),
408
+ react_1.default.createElement(material_1.IconButton, { onClick: (e) => {
409
+ var _a;
410
+ let currentValue = JSON.parse((_a = localStorage.getItem(localTableName)) !== null && _a !== void 0 ? _a : '[]');
411
+ currentValue = currentValue.map((item) => {
412
+ if (item.label === x.label) {
413
+ return Object.assign(Object.assign(Object.assign({}, item), { value: '' }), (item.value2 ? { value2: '' } : {}));
414
+ }
415
+ return item;
416
+ });
417
+ handleFiltrarDados(currentValue);
418
+ }, size: 'small', sx: {
419
+ padding: 0,
420
+ } },
421
+ react_1.default.createElement(Clear_1.default, { sx: {
422
+ fill: 'white',
423
+ } }))))))),
424
+ 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' },
425
+ 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: {
426
+ padding: 0.5,
427
+ backgroundColor: index % 2 === 0 ? '#F8FAFC' : 'white',
428
+ paddingTop: 2,
429
+ borderTop: 'solid 1.5px #E2E8F0',
430
+ position: 'relative',
431
+ }, elevation: 0 },
432
+ react_1.default.createElement(Grid_1.default, { container: true, spacing: isSmall ? 2 : 0, paddingX: 2, rowSpacing: 2 },
433
+ columns.map((c) => {
434
+ var _a, _b;
435
+ return (react_1.default.createElement(Grid_1.default, { key: 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: {
436
+ overflow: 'hidden',
437
+ } },
438
+ react_1.default.createElement(material_1.Box, { sx: { width: 'max-content', paddingX: 1 } },
439
+ react_1.default.createElement(Typography_1.default, { fontSize: 16, fontWeight: 700, color: '#1E293B', fontFamily: 'Inter' }, c.title)),
440
+ react_1.default.createElement(material_1.Box, { paddingLeft: 1, position: 'relative' },
441
+ react_1.default.createElement(material_1.Collapse, { in: expandObj[index] === true, collapsedSize: collapsedSize, onExited: (e) => setShowExpandObjOnExited((s) => (Object.assign(Object.assign({}, s), { [index]: false }))) },
442
+ react_1.default.createElement(material_1.Box, { sx: {
443
+ wordWrap: 'break-word',
444
+ color: '#1E293B',
445
+ fontSize: 16,
446
+ }, fontFamily: 'Inter' },
447
+ 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, '')))),
448
+ 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.keyName, '')) : ((_a = (0, lodash_get_1.default)(x, 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.keyName, '')) !== null && _b !== void 0 ? _b : '').toString().substring(0, expandTextMaxLength) + '...')) : ((0, lodash_get_1.default)(x, c.keyName, ''))))))))));
449
+ }),
450
+ react_1.default.createElement(Grid_1.default, { item: true, xs: 12, md: lg ? 12 / columnSize : mediaQueryLG ? mediaQueryLG.action : 12 / columnSize },
451
+ 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))),
452
+ showExpandObj[index] && (react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'flex-end', bottom: 0, width: '100%' },
453
+ react_1.default.createElement(material_1.Button, { onClick: (e) => {
454
+ setExpandObj((s) => (Object.assign(Object.assign({}, s), { [index]: !s[index] })));
455
+ setShowExpandObjOnExited((s) => (Object.assign(Object.assign({}, s), { [index]: true })));
456
+ }, sx: {
457
+ padding: 0,
458
+ color: '#637082',
459
+ textTransform: 'capitalize',
460
+ }, 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'))))))))),
461
+ getMaxItems().length > 0 && (react_1.default.createElement(material_1.Stack, { padding: 1, direction: {
462
+ xs: 'column',
463
+ md: 'row',
464
+ }, spacing: {
465
+ xs: 2,
466
+ md: 0,
467
+ }, justifyContent: 'space-between', alignItems: 'center' }, csvConfig && (react_1.default.createElement(material_1.Stack, { direction: {
468
+ xs: 'column',
469
+ md: 'row',
470
+ }, justifyContent: 'flex-end', spacing: 1 },
471
+ JSON.parse((_b = localStorage.getItem(localTableName)) !== null && _b !== void 0 ? _b : '[]')
472
+ .filter((x) => x.value || (x.operator === 'entre' && (x.value || x.value2))).length > 0 &&
473
+ react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(FileDownload_1.default, null), variant: 'contained', size: 'small', onClick: (e) => handleCSVDownload(list), sx: { backgroundColor: '#a5a5a5', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } } }, "Baixar Filtrados"),
474
+ react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(FileDownload_1.default, null), variant: 'contained', size: 'small', onClick: (e) => handleCSVDownload(startData.current, true), sx: { backgroundColor: '#22C55E', marginRight: { xs: 2, md: 0 }, width: { xs: '100%', md: 'fit-content' } } }, "Baixar Tabela")))))),
475
+ react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'center', paddingY: 1, paddingTop: 2 },
476
+ react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'center', alignItems: 'center', spacing: 2 },
477
+ react_1.default.createElement(material_1.Button, { onClick: (e) => setListPage((s) => {
478
+ if (s > 1) {
479
+ return s - 1;
480
+ }
481
+ return 1;
482
+ }), sx: { bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' } },
483
+ react_1.default.createElement(NavigateNextRounded_1.default, { sx: { transform: 'scale(1.5) scaleX(-1)' } })),
484
+ react_1.default.createElement(Pagination_1.default, { renderItem: (item) => {
485
+ if (item.type === 'page')
486
+ return (react_1.default.createElement(material_1.Button, { onClick: item.onClick, sx: Object.assign(Object.assign({ fontWeight: 600 }, (item.selected
487
+ ? {
488
+ bgcolor: '#33B55D',
489
+ color: 'white',
490
+ }
491
+ : {
492
+ color: '#1E293B',
493
+ })), { borderRadius: '100%', padding: 0, margin: 0, minWidth: 0, width: '40px', height: '40px', marginX: 0.25 }) }, item.page));
494
+ if (!['next', 'previous', 'page'].includes(item.type))
495
+ return react_1.default.createElement(material_1.PaginationItem, Object.assign({}, item));
496
+ }, count: paginationCount, siblingCount: isSmall ? 0 : 6, size: 'large', onChange: onPaginationChange, page: listPage, shape: 'circular', variant: 'outlined', sx: {
497
+ '.MuiPagination-ul': {
498
+ backgroundColor: 'white',
499
+ border: 'solid 1px #E2E8F0',
500
+ borderRadius: '50px',
501
+ paddingX: 0.25,
502
+ paddingY: 0.5,
503
+ },
504
+ } }),
505
+ react_1.default.createElement(material_1.Button, { onClick: (e) => setListPage((s) => {
506
+ if (s < paginationCount) {
507
+ return s + 1;
508
+ }
509
+ return paginationCount;
510
+ }), sx: { bgcolor: 'white', borderRadius: '50px', height: '40px', width: '40px', minWidth: 0, border: 'solid 1px #E2E8F0' } },
511
+ react_1.default.createElement(NavigateNextRounded_1.default, { sx: { transform: 'scale(1.5)' } }))))));
512
+ }
513
+ exports.Table = Table;
514
+ exports.default = react_1.default.memo(Table);
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TableErrorState = void 0;
7
+ const icons_material_1 = require("@mui/icons-material");
8
+ const material_1 = require("@mui/material");
9
+ const react_1 = __importDefault(require("react"));
10
+ function TableErrorState({ customErrorMsg, error }) {
11
+ return (react_1.default.createElement(material_1.Box, { bgcolor: '#fff2c8', color: '#3e3129', padding: 2, marginX: 2, borderRadius: 4 },
12
+ react_1.default.createElement(material_1.Typography, { fontSize: 24, textAlign: 'center', fontFamily: 'Inter' },
13
+ error.status === 403 && 'Acesso negado',
14
+ error.status === 500 && (react_1.default.createElement(material_1.Box, { fontWeight: 500, textAlign: 'center' },
15
+ react_1.default.createElement(icons_material_1.ReportProblemRounded, { sx: {
16
+ transform: 'scale(2)',
17
+ marginY: 1,
18
+ fill: '#3e3129',
19
+ } }),
20
+ react_1.default.createElement(material_1.Box, null, customErrorMsg ? (customErrorMsg) : (react_1.default.createElement(react_1.default.Fragment, null,
21
+ "N\u00E3o foi poss\u00EDvel se conectar ao servidor no momento. Por favor, aguarde alguns instantes e tente de novo.",
22
+ react_1.default.createElement("br", null),
23
+ react_1.default.createElement("br", null),
24
+ "Caso precise de ajuda, entre em contato pelo email: ",
25
+ react_1.default.createElement("strong", null, "cdes@ssp.df.gov.br")))))))));
26
+ }
27
+ exports.TableErrorState = TableErrorState;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  interface TableLoadingStateProps {
2
3
  tableName: string;
3
4
  }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TableLoadingState = void 0;
7
+ const icons_material_1 = require("@mui/icons-material");
8
+ const material_1 = require("@mui/material");
9
+ const Typography_1 = __importDefault(require("@mui/material/Typography"));
10
+ const react_1 = __importDefault(require("react"));
11
+ function TableLoadingState({ tableName }) {
12
+ return (react_1.default.createElement(material_1.Stack, { sx: {
13
+ height: '100%',
14
+ width: '100%',
15
+ }, justifyContent: 'center', alignItems: 'center' },
16
+ react_1.default.createElement(material_1.Box, { width: '100%' },
17
+ react_1.default.createElement(material_1.Stack, { direction: 'row', justifyContent: 'center', alignItems: 'center', justifyItems: 'center', spacing: 2, marginY: 4 },
18
+ react_1.default.createElement(icons_material_1.PendingRounded, { sx: {
19
+ fill: '#5e5e5e',
20
+ } }),
21
+ react_1.default.createElement(Typography_1.default, { fontWeight: 600, fontSize: 20, textTransform: 'capitalize', textAlign: 'center', color: '#5e5e5e' },
22
+ "Carregando ",
23
+ tableName)),
24
+ react_1.default.createElement(material_1.LinearProgress, { color: 'inherit' }),
25
+ Array(10)
26
+ .fill('')
27
+ .map((x) => (react_1.default.createElement(material_1.Stack, { direction: {
28
+ xs: 'column',
29
+ md: 'row',
30
+ }, spacing: {
31
+ xs: 3,
32
+ md: 1,
33
+ }, justifyContent: 'space-between', paddingY: 8, borderBottom: '1px solid #cacaca' }, Array(7)
34
+ .fill(0)
35
+ .map((y) => (react_1.default.createElement(material_1.Box, null,
36
+ react_1.default.createElement(material_1.Skeleton, { width: 60 }),
37
+ react_1.default.createElement(material_1.Skeleton, { width: 120 }))))))))));
38
+ }
39
+ exports.TableLoadingState = TableLoadingState;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { CsvConfigProp, FilterValue, OrderBy } from './types';
2
3
  export declare const getCount: (countData: any[], itemsCount: number) => number;
3
4
  export declare function transformArrayObjectInString(o: Object): String;