@ssplib/react-components 0.0.207 → 0.0.209
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.
|
@@ -5,8 +5,12 @@ interface ColumnData {
|
|
|
5
5
|
customComponent?: (content: string, obj: any) => JSX.Element;
|
|
6
6
|
size?: number;
|
|
7
7
|
}
|
|
8
|
-
type FilterTypes = 'a-z' | 'z-a' | 'items' | 'date-interval' | 'data-a-z' | 'data-z-a';
|
|
9
|
-
export declare function Table({ columns, fetchFunc, emptyMsg, dataPath, tableName, csv, columnSize, action, useKC, statusKeyName, csvExcludeKeys, csvExcludeKeysCSV, csvExcludeKeysAll, csvCustomKeyNames, csvExcludeValidate, csvButtonTitle, csvNoZipText, csvAllButtonTitle, removeQuotes, normalize, csvShowAllButton, csvWithoutZip, itemCount, csvUpper, csvZipFileNamesKey, generateCsvZip, filters, hideTitleCSV, csvExcludeUpper, filterSeparator, filterStorageName, multipleDataPath, }: {
|
|
8
|
+
type FilterTypes = 'a-z' | 'z-a' | 'items' | 'date-interval' | 'data-a-z' | 'data-z-a' | 'select';
|
|
9
|
+
export declare function Table({ mediaQueryLG, columns, fetchFunc, emptyMsg, dataPath, tableName, csv, columnSize, action, useKC, statusKeyName, csvExcludeKeys, csvExcludeKeysCSV, csvExcludeKeysAll, csvCustomKeyNames, csvExcludeValidate, csvButtonTitle, csvNoZipText, csvAllButtonTitle, removeQuotes, normalize, csvShowAllButton, csvWithoutZip, itemCount, csvUpper, csvZipFileNamesKey, generateCsvZip, filters, hideTitleCSV, csvExcludeUpper, filterSeparator, filterStorageName, multipleDataPath, }: {
|
|
10
|
+
mediaQueryLG?: {
|
|
11
|
+
all: number;
|
|
12
|
+
action: number;
|
|
13
|
+
};
|
|
10
14
|
normalize?: boolean;
|
|
11
15
|
csvUpper?: boolean;
|
|
12
16
|
multipleDataPath?: string;
|
|
@@ -49,6 +53,8 @@ export declare function Table({ columns, fetchFunc, emptyMsg, dataPath, tableNam
|
|
|
49
53
|
type: FilterTypes;
|
|
50
54
|
keyName: string;
|
|
51
55
|
name: string;
|
|
56
|
+
listEndpoint?: string;
|
|
57
|
+
selectList?: string[];
|
|
52
58
|
referenceKey?: string;
|
|
53
59
|
options?: {
|
|
54
60
|
name: string;
|
|
@@ -22,6 +22,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
25
34
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
36
|
};
|
|
@@ -43,6 +52,7 @@ const DatePicker_1 = __importDefault(require("../date/DatePicker"));
|
|
|
43
52
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
44
53
|
const jszip_1 = __importDefault(require("jszip"));
|
|
45
54
|
const NavigateNextRounded_1 = __importDefault(require("@mui/icons-material/NavigateNextRounded"));
|
|
55
|
+
const axios_1 = __importDefault(require("axios"));
|
|
46
56
|
function removePunctuationAndAccents(text) {
|
|
47
57
|
// Remove accents and diacritics
|
|
48
58
|
const normalizedText = text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
@@ -51,7 +61,7 @@ function removePunctuationAndAccents(text) {
|
|
|
51
61
|
return cleanedText;
|
|
52
62
|
}
|
|
53
63
|
let startData = [];
|
|
54
|
-
function Table({ columns, fetchFunc, emptyMsg = {
|
|
64
|
+
function Table({ mediaQueryLG, columns, fetchFunc, emptyMsg = {
|
|
55
65
|
user: 'Nenhum dado encontrado',
|
|
56
66
|
public: 'Nenhum dado encontrado',
|
|
57
67
|
}, 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, filters = {}, hideTitleCSV = false, csvExcludeUpper = [], filterSeparator = '|', filterStorageName = 'tableFilters', multipleDataPath = '', }) {
|
|
@@ -66,11 +76,13 @@ function Table({ columns, fetchFunc, emptyMsg = {
|
|
|
66
76
|
const [paginationCount, setPagCount] = (0, react_1.useState)(1);
|
|
67
77
|
const [listPage, setListPage] = (0, react_1.useState)(1);
|
|
68
78
|
const [appliedFilters, setAppliedFilters] = (0, react_1.useState)([]);
|
|
79
|
+
const [oldSelectState, setOldSelectState] = (0, react_1.useState)('');
|
|
69
80
|
// filters states
|
|
70
81
|
const [filterCollapse, setFilterCollapse] = (0, react_1.useState)(Array(Object.keys(filters).length).fill(false));
|
|
71
82
|
const [filterOpen, setFilterOpen] = (0, react_1.useState)(false);
|
|
72
83
|
const theme = (0, material_1.useTheme)();
|
|
73
84
|
const isSmall = (0, material_1.useMediaQuery)(theme.breakpoints.only('xs'));
|
|
85
|
+
const lg = (0, material_1.useMediaQuery)(theme.breakpoints.up(2000));
|
|
74
86
|
(0, react_1.useEffect)(() => {
|
|
75
87
|
setError(null);
|
|
76
88
|
if (userLoaded || !useKC) {
|
|
@@ -429,6 +441,11 @@ function Table({ columns, fetchFunc, emptyMsg = {
|
|
|
429
441
|
return (react_1.default.createElement(Typography_1.default, { color: '#991b1b', fontWeight: 600, fontFamily: 'Inter' }, "FORA DO PRAZO"));
|
|
430
442
|
}
|
|
431
443
|
}, []);
|
|
444
|
+
function getSelectValues(url) {
|
|
445
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
446
|
+
return ['dd'];
|
|
447
|
+
});
|
|
448
|
+
}
|
|
432
449
|
(0, react_1.useEffect)(() => {
|
|
433
450
|
filterBasedOnList(appliedFilters);
|
|
434
451
|
}, [appliedFilters]);
|
|
@@ -494,7 +511,7 @@ function Table({ columns, fetchFunc, emptyMsg = {
|
|
|
494
511
|
return 0;
|
|
495
512
|
});
|
|
496
513
|
} //
|
|
497
|
-
else if (type === 'items') {
|
|
514
|
+
else if (type === 'items' || type === 'select') {
|
|
498
515
|
rawList = rawList
|
|
499
516
|
.filter((x) => String(x[keyName])
|
|
500
517
|
.toLowerCase()
|
|
@@ -719,9 +736,22 @@ function Table({ columns, fetchFunc, emptyMsg = {
|
|
|
719
736
|
borderRadius: '8px',
|
|
720
737
|
paddingX: '24px',
|
|
721
738
|
paddingY: '8px',
|
|
739
|
+
minWidth: 200,
|
|
722
740
|
backgroundColor: '#208FE8',
|
|
723
741
|
textTransform: 'capitalize',
|
|
724
|
-
} },
|
|
742
|
+
} },
|
|
743
|
+
react_1.default.createElement(material_1.Stack, { direction: 'row', marginLeft: 2, borderRadius: 5, padding: 0 },
|
|
744
|
+
react_1.default.createElement("span", null, "Filtro"),
|
|
745
|
+
react_1.default.createElement("span", { style: {
|
|
746
|
+
whiteSpace: 'nowrap',
|
|
747
|
+
marginLeft: 8,
|
|
748
|
+
backgroundColor: '#15528f',
|
|
749
|
+
borderRadius: 8,
|
|
750
|
+
padding: '0px 8px',
|
|
751
|
+
} },
|
|
752
|
+
appliedFilters.length,
|
|
753
|
+
" aplicado",
|
|
754
|
+
appliedFilters.length > 1 ? 's' : ''))))),
|
|
725
755
|
react_1.default.createElement(material_1.Stack, { alignItems: 'end', width: '100%', pb: 2 },
|
|
726
756
|
react_1.default.createElement(Typography_1.default, { fontWeight: 600 }, "Demandas cadastradas"),
|
|
727
757
|
react_1.default.createElement(material_1.Stack, { justifyContent: 'center' },
|
|
@@ -734,13 +764,13 @@ function Table({ columns, fetchFunc, emptyMsg = {
|
|
|
734
764
|
list.length)))),
|
|
735
765
|
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' },
|
|
736
766
|
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: { padding: 0.5, backgroundColor: index % 2 === 0 ? '#F8FAFC' : 'white', paddingY: 2, borderTop: 'solid 1.5px #E2E8F0' }, elevation: 0 },
|
|
737
|
-
react_1.default.createElement(Grid_1.default, { container: true, spacing: isSmall ? 2 : 0, paddingX: 2 },
|
|
738
|
-
columns.map((c) => (react_1.default.createElement(Grid_1.default, { key: c.keyName + index, item: true, xs: 12, md: (12 / columnSize) * (!!c.size ? c.size : 1) },
|
|
767
|
+
react_1.default.createElement(Grid_1.default, { container: true, spacing: isSmall ? 2 : 0, paddingX: 2, rowSpacing: 2 },
|
|
768
|
+
columns.map((c) => (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) },
|
|
739
769
|
react_1.default.createElement(material_1.Box, { sx: { width: 'max-content', paddingX: 1 } },
|
|
740
770
|
react_1.default.createElement(Typography_1.default, { fontSize: 16, fontWeight: 700, color: '#1E293B', fontFamily: 'Inter' }, c.title)),
|
|
741
771
|
react_1.default.createElement(material_1.Box, { paddingLeft: 1 },
|
|
742
772
|
react_1.default.createElement(material_1.Box, { sx: { wordWrap: 'break-word', color: '#1E293B', fontSize: 16 }, fontFamily: 'Inter' }, c.customComponent ? (c.customComponent((0, lodash_get_1.default)(x, c.keyName), x)) : c.keyName === statusKeyName ? (getStatusMsg((0, lodash_get_1.default)(x, c.keyName))) : (react_1.default.createElement("div", { dangerouslySetInnerHTML: { __html: (0, lodash_get_1.default)(x, c.keyName) } }))))))),
|
|
743
|
-
react_1.default.createElement(Grid_1.default, { item: true, xs: 12, md: 12 / columnSize },
|
|
773
|
+
react_1.default.createElement(Grid_1.default, { item: true, xs: 12, md: lg ? 12 / columnSize : mediaQueryLG ? mediaQueryLG.action : 12 / columnSize },
|
|
744
774
|
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))))))))),
|
|
745
775
|
getMaxItems().length > 0 && (react_1.default.createElement(material_1.Stack, { padding: 1, direction: {
|
|
746
776
|
xs: 'column',
|
|
@@ -820,7 +850,35 @@ function Table({ columns, fetchFunc, emptyMsg = {
|
|
|
820
850
|
react_1.default.createElement(DatePicker_1.default, { name: 'filterDtEnd', title: 'At\u00E9 (opcional):' }),
|
|
821
851
|
react_1.default.createElement(material_1.Stack, { marginTop: 2 },
|
|
822
852
|
react_1.default.createElement(material_1.Button, { type: 'submit', variant: 'outlined', startIcon: react_1.default.createElement(icons_material_1.CalendarToday, null), sx: { width: '100%' } }, "Filtrar por Data"),
|
|
823
|
-
react_1.default.createElement(material_1.Box, null, appliedFilters.filter((x) => x.isDate).length > 0 && (react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(icons_material_1.Delete, { sx: { fill: 'white' } }), variant: 'contained', color: 'error', sx: { width: '100%', marginTop: 1 }, onClick: (e) => removeFilter('isDate') }, "Remover Filtro Data"))))))) : (react_1.default.createElement(
|
|
853
|
+
react_1.default.createElement(material_1.Box, null, appliedFilters.filter((x) => x.isDate).length > 0 && (react_1.default.createElement(material_1.Button, { startIcon: react_1.default.createElement(icons_material_1.Delete, { sx: { fill: 'white' } }), variant: 'contained', color: 'error', sx: { width: '100%', marginTop: 1 }, onClick: (e) => removeFilter('isDate') }, "Remover Filtro Data"))))))) : x.selectList ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
854
|
+
react_1.default.createElement(material_1.Autocomplete, { options: x.selectList.map((x) => ({
|
|
855
|
+
id: x.toLowerCase(),
|
|
856
|
+
label: x,
|
|
857
|
+
})), onFocus: (e) => console.log('ata'), onChange: (e, value) => {
|
|
858
|
+
console.log(value);
|
|
859
|
+
if (value) {
|
|
860
|
+
const id = `${f}:${JSON.stringify(value)}`;
|
|
861
|
+
handleFilterOption(x.type, x.keyName, id, value === null || value === void 0 ? void 0 : value.label.toLowerCase(), x.referenceKey);
|
|
862
|
+
setOldSelectState(id);
|
|
863
|
+
}
|
|
864
|
+
else {
|
|
865
|
+
removeFilter(oldSelectState);
|
|
866
|
+
}
|
|
867
|
+
}, sx: {
|
|
868
|
+
margin: 1,
|
|
869
|
+
}, size: 'small', renderInput: (params) => react_1.default.createElement(TextField_1.default, Object.assign({}, params, { label: 'Teste' })) }))) : x.listEndpoint ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
870
|
+
react_1.default.createElement(FetchSelectAutoComplete, { url: x.listEndpoint, label: x.name, onChange: (e, value) => {
|
|
871
|
+
console.log(value);
|
|
872
|
+
if (value) {
|
|
873
|
+
const id = `${f}:${JSON.stringify(value)}`;
|
|
874
|
+
console.log(x.type, x.keyName, id, value === null || value === void 0 ? void 0 : value.label.toLowerCase(), x.referenceKey);
|
|
875
|
+
handleFilterOption(x.type, x.keyName, id, value === null || value === void 0 ? void 0 : value.id.toLowerCase(), x.referenceKey);
|
|
876
|
+
setOldSelectState(id);
|
|
877
|
+
}
|
|
878
|
+
else {
|
|
879
|
+
removeFilter(oldSelectState);
|
|
880
|
+
}
|
|
881
|
+
} }))) : (react_1.default.createElement(material_1.Stack, { direction: 'row', sx: Object.assign({}, (appliedFilters.map((x) => x.uniqueName).includes(`${f}:${JSON.stringify(x)}`) && {
|
|
824
882
|
bgcolor: '#b7e4c7',
|
|
825
883
|
':hover': { bgcolor: '#b7e4c7' },
|
|
826
884
|
})) },
|
|
@@ -837,4 +895,16 @@ function Table({ columns, fetchFunc, emptyMsg = {
|
|
|
837
895
|
react_1.default.createElement(material_1.Button, { variant: 'contained', onClick: handleFilterReset, startIcon: react_1.default.createElement(icons_material_1.RestartAlt, null), sx: { marginX: 2, marginBottom: 2 } }, "Reiniciar"))));
|
|
838
896
|
}
|
|
839
897
|
exports.Table = Table;
|
|
898
|
+
function FetchSelectAutoComplete(props) {
|
|
899
|
+
const [data, setData] = (0, react_1.useState)([]);
|
|
900
|
+
(0, react_1.useEffect)(() => {
|
|
901
|
+
axios_1.default.get(props.url).then((dt) => {
|
|
902
|
+
setData(dt.data);
|
|
903
|
+
});
|
|
904
|
+
}, []);
|
|
905
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
906
|
+
react_1.default.createElement(material_1.Autocomplete, { options: data, onFocus: (e) => console.log('ata'), onChange: props.onChange, sx: {
|
|
907
|
+
margin: 1,
|
|
908
|
+
}, size: 'small', renderInput: (params) => react_1.default.createElement(TextField_1.default, Object.assign({}, params, { label: props.label })) })));
|
|
909
|
+
}
|
|
840
910
|
exports.default = react_1.default.memo(Table);
|